c++ 操作oracle 最佳方式_oracle备份恢复基础详解
一、Oracle備份方式分類:
Oracle有兩類備份方式:
(1)物理備份:是將實(shí)際組成數(shù)據(jù)庫的操作系統(tǒng)文件從一處拷貝到另一處的備份過程,通常是從磁盤到磁帶。
物理備份又分為冷備份、熱備份;
(2)邏輯備份:是利用SQL語言從數(shù)據(jù)庫中抽取數(shù)據(jù)并存于二進(jìn)制文件的過程。
邏輯備份使用導(dǎo)入導(dǎo)出工具:EXPDP/IMPDP或EXP/IMP;
備份方式的優(yōu)缺點(diǎn)及使用時(shí)機(jī)比較如下圖:
二、Oracle備份方式介紹:
1、物理備份之冷備份(條件-NonArchiveLog):
當(dāng)數(shù)據(jù)庫可以暫時(shí)處于關(guān)閉狀態(tài)時(shí),我們需要將它在這一穩(wěn)定時(shí)刻的數(shù)據(jù)相關(guān)文件轉(zhuǎn)移到安全的區(qū)域,當(dāng)數(shù)據(jù)庫遭到破壞,再從安全區(qū)域?qū)浞莸臄?shù)據(jù)庫相關(guān)文件拷貝回原來的位置,這樣,就完成了一次快捷安全等數(shù)據(jù)轉(zhuǎn)移。由于是在數(shù)據(jù)庫不提供服務(wù)的關(guān)閉狀態(tài),所以稱為冷備份。冷備份具有很多優(yōu)良特性,比如上面圖中我們提到的,快速,方便,以及高效。一次完整的冷備份步驟應(yīng)該是:
(1)首先關(guān)閉數(shù)據(jù)庫(shutdown normal)
(2)拷貝相關(guān)文件到安全區(qū)域(利用操作系統(tǒng)命令拷貝數(shù)據(jù)庫的所有的數(shù)據(jù)文件、日志文件、控制文件、參數(shù)文件、口令文件等(包括路徑))
(3)重新啟動(dòng)數(shù)據(jù)庫(startup)
物理冷備份的恢復(fù):
恢復(fù)的時(shí)候,相對(duì)比較簡單了,我們停掉數(shù)據(jù)庫,將文件拷貝回相應(yīng)位置,重啟數(shù)據(jù)庫就可以了,當(dāng)然也可以用腳本來完成。
2、物理備份之熱備份:(條件-ArchiveLog)
當(dāng)我們需要做一個(gè)精度比較高的備份,而且我們的數(shù)據(jù)庫不可能停掉(少許訪問量)時(shí),這個(gè)情況下,我們就需要?dú)w檔方式下的備份,就是下面討論的熱備份。熱備份可以非常精確的備份表空間級(jí)和用戶級(jí)的數(shù)據(jù),由于它是根據(jù)歸檔日志的時(shí)間軸來備份恢復(fù)的,理論上可以恢復(fù)到前一個(gè)操作,甚至就是前一秒的操作。具體步驟如下:
(1)通過視圖v$database,查看數(shù)據(jù)庫是否在Archive模式下:
SQL> select log_mode from v$database; 如果不是Archive模式,則設(shè)定數(shù)據(jù)庫運(yùn)行于歸檔模式下: SQL>shutdown immediate SQL>startup mount SQL>alter database archivelog; SQL>alter database open;如果Automaticarchival顯示為“Enabled”,則數(shù)據(jù)庫歸檔方式為自動(dòng)歸檔。否則需要手工歸檔,或者將歸檔方式修改為自動(dòng)歸檔,如:
正常shutdown數(shù)據(jù)庫,在參數(shù)文件中init.ora中加入如下參數(shù)
SQL>shutdown immediate 修改init.ora: LOG_ARCHIVE_START=TRUE LOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch(歸檔日志存放位置可以自己定義) SQL>startup然后,重新啟動(dòng)數(shù)據(jù)庫,此時(shí)Oracle數(shù)據(jù)庫將以自動(dòng)歸檔的方式工作在Archive模式下。其中參數(shù)LOG_ARCHIVE_DEST1是指定的歸檔日志文件的路徑,建議與Oracle數(shù)據(jù)庫文件存在不同的硬盤,一方面減少磁盤I/O競爭,另外一方面也可以避免數(shù)據(jù)庫文件所在硬盤毀壞之后的文件丟失。歸檔路徑也可以直接指定為磁帶等其它物理存儲(chǔ)設(shè)備,但可能要考慮讀寫速度、可寫條件和性能等因素。
(2)表空間文件備份步驟:
a,首先,修改表空間文件為備份模式 ALTER TABLESPACE tablespace_name BEGIN BACKUP;
b,然后,拷貝表空間文件到安全區(qū)域 !CP tablespace_name D_PATH;
c,最后,將表空間的備份模式關(guān)閉 ALTER TABLESPACE tablespace_name END BACKUP;
(3)歸檔日志文件備份步驟:
停止歸檔進(jìn)程-->備份歸檔日志文件-->啟動(dòng)歸檔進(jìn)程
如果日志文檔比較多,我們將它們寫入一個(gè)文件成為一個(gè)恢復(fù)的參考:$ files `ls /arch*.dbf`;export files
(4)控制文件備份步驟:
SQL> alter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;
物理熱備份的恢復(fù):
熱備份的恢復(fù),對(duì)于歸檔方式數(shù)據(jù)庫的恢復(fù)要求不但有有效的日志備份還要求有一個(gè)在歸檔方式下作的有效的全庫備份。歸檔備份在理論上可以無數(shù)據(jù)丟失,但是對(duì)于硬件以及操作人員的要求都比較高。在我們使用歸檔方式備份的時(shí)候,全庫物理備份也是非常重要的。歸檔方式下數(shù)據(jù)庫的恢復(fù)要求從全備份到失敗點(diǎn)所有的日志都要完好無缺。
恢復(fù)步驟:LOG_ARCHIVE_DEST_1
(1)shutdown數(shù)據(jù)庫。
(2)將全備份的數(shù)據(jù)文件放到原來系統(tǒng)的目錄中。
(3)將全備份到失敗點(diǎn)的所有歸檔日志放到參數(shù)LOG_ARCHIVE_DEST_1所指定的位置。
(4)利用sqlplus登陸到空實(shí)例。(connect / as sysdba)
startup mount set autorecovery on recover database; alter database open;3、邏輯備份之EXP/IMP:
EXP和IMP是客戶端工具程序,它們既可以在客戶端使用,也可以在服務(wù)端使用。
EXPDP和IMPDP是服務(wù)端的工具程序,他們只能在ORACLE服務(wù)端使用,不能在客戶端使用。
IMP只適用于EXP導(dǎo)出的文件,不適用于EXPDP導(dǎo)出文件;IMPDP只適用于EXPDP導(dǎo)出的文件,而不適用于EXP導(dǎo)出文件。
(1)導(dǎo)出表:
E:>exp system/oracle TABLES=scott.dept,scott.emp FILE=a.dmp
(2)導(dǎo)出方案:
E:>exp system/oracle OWNER=scott FILE=b.dmp
(3)導(dǎo)出數(shù)據(jù)庫:
E:>exp system/oracle FILE=c.dmp FULL=Y
(4)導(dǎo)入表:
SQL> drop table scott.emp;
SQL> drop table scott.dept;
E:>impdp scott/tiger file=a.dmp tables=dept,emp
(5)導(dǎo)入方案:
SQL> drop user scott cascade;
SQL> create user scott identified by tiger;
SQL> grant dba to scott;
E:>impdp scott/tiger file=b.dmp
E:>impdp system/oracle file=b.dmp owner=scott
(6)導(dǎo)入數(shù)據(jù)庫:
impdp system/oracle file=c.dmp full=y
4、邏輯備份之EXPDP/IMPDP
使用數(shù)據(jù)泵(Data Dump)導(dǎo)出/導(dǎo)入包括4種方式:導(dǎo)出表、導(dǎo)出方案、導(dǎo)出表空間、導(dǎo)出數(shù)據(jù)庫。
(1)導(dǎo)出表
在E盤建立目錄oracledump;
SQL> CREATE DIRECTORY dump_dir AS 'E:oracledump';SQL> GRANT READ,WRITE ON DIRECTORY dump_dir TO scott;E:>expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp(2)導(dǎo)出方案:
E:>expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schemaScott.dmp SCHEMAS='SCOTT';(3)導(dǎo)出表空間:
E:>expdp system/oracle directory=dump_dir dumpfile=tablespaceUsers.dmp ESTIMATE_ONLY(4)導(dǎo)出數(shù)據(jù)庫:
E:>expdp system/oracle directory=dump_dir dumpfile=database.dmp FULL=Y(5)導(dǎo)入表:
SQL> drop table scott.emp;SQL> drop table scott.dept;E:>impdp scott/tiger directory=dump_dir dumpfile=tab.dmp tables=dept,emp(6)導(dǎo)入方案:
SQL> drop user scott cascade;SQL> create user scott identified by tiger;SQL> grant dba to scott;E:>impdp system/oracle directory=dump_dir dumpfile=schemaScott.dmp schemas=scott(7)導(dǎo)入表空間:
impdp system/oracle directory=dump_dir dumpfile=tablespaceUsers.dmp tablespaces=users(8)導(dǎo)入數(shù)據(jù)庫:
impdp system/oracle directory=dump_dir dumpfile=database.dmp FULL=Y后面會(huì)分享更多DBA備份恢復(fù)方面的內(nèi)容,感興趣的朋友可以關(guān)注下!!
總結(jié)
以上是生活随笔為你收集整理的c++ 操作oracle 最佳方式_oracle备份恢复基础详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转:求多边形的面积 算法几何
- 下一篇: Angr Unsat_corn 使用之坑