Oracle資料庫的備份與恢復方式比較

lenx2000發表於2010-04-16
摘 要 確保資料安全是每一位資料庫DBA的必要工作,根據資料的重要性和軟硬體條件制定可行的備份恢復方案,將資料丟失造成的損失降到最低。主要探討Oracle資料庫匯出 /匯入(Export/Import)、冷備份、熱備份、ram備份與恢復的方法,比較各種方式的優缺點。
    關鍵詞 資料庫備份與恢復;匯出/匯入(Export/Import);冷備份;熱備份;rman資料備份與恢復

1 引言

    隨著計算機資訊化的普及和大量資料的電子化,資料安全顯得尤為重要。一旦造成資料丟失,將會付出巨大的工作量去彌補資料,也可能因此造成不可挽回的損失。因此對從事資料庫管理的DBA 來說,做好資料的備份與恢復是一項很重要的工作,本文專門針對Oracle資料庫的備份與恢復進行探討。
    Oracle資料庫有四種常用的備份方法,它們分別是匯出/匯入(EXP/IMP)、熱備份、冷備份、rman備份

2 匯出、匯入(Export、Import)

    利用Export可將資料從資料庫中提取出來,利用Import則可將提取出來的資料送回到Oracle資料庫中去,這是人們最常用,也是比較可靠的一種備份恢復方法。在資料庫的版本升級時一般採用這種方法。Oracle支援三種方式型別的輸出,下面舉例說明(jnth是使用者名稱,thpassword是使用者密碼, oracle是資料庫服務命名, yxgl_a、yxgl_b, yxgl_c是表名):

2.1 表方式(T方式),將指定表的資料匯出

    備份某個使用者模式下指定的物件(表)。業務資料庫通常採用這種備份方式,若備份到本地檔案,使用如下命令:
    exp jnth/thpassword@oracle rows=y indexes=n compress=n buffer=50000000 file=080813.dmp log=080813.log tables= yxgl_a,yxgl_b,yxgl_c

2.2 使用者方式(U方式),將指定使用者的所有物件及資料匯出

    備份某個使用者模式下的所有物件。業務資料庫通常採用這種備份方式,若備份到本地檔案,使用如下命令:
    exp jnth/thpassword@oracle wner=jnth rows=y indexes=n compress=n buffer=50000000 file=080813.dmp log=080813.log

2.3 全庫方式(Full方式),將資料庫中的所有物件匯出

    備份完整的資料庫,備份命令為:
exp system/manager@oracle rows=y indexes=n compress=n buffer=50000000 full=y file=080813.dmp log=080813.log
    資料匯入(Import)的過程是資料匯出(Export)的逆過程,分別將資料檔案匯入資料庫和將資料庫資料匯出到資料檔案。

2.4 恢復備份資料中的指定表

    若從本地檔案恢復,使用如下命令:
    imp jnth/thpassword@oracle fromuser=jnth touser=jnth rows=y indexes=n commit=y buffer=50000000 ignore=n file=080813.dmp log=080813.log tables=yxgl_a,yxgl_b,yxgl_c

2.5 按照使用者模式備份的資料進行恢復

    A. 恢復備份資料的全部內容
    若從本地檔案恢復,使用如下命令:
    imp jnth/thpassword@oracle fromuser=jnth touser=jnth rows=y indexes=n commit=y buffer=50000000 ignore=n file=080813.dmp log=080813.log
    B. 恢復備份資料中的指定表
    若從本地檔案恢復,使用如下命令:
    imp jnth/thpassword@oracle fromuser=jnth touser=jnth rows=y indexes=n commit=y buffer=50000000 ignore=n file=080813.dmp log=080813.log tables=yxgl_a,yxgl_b,yxgl_c

2.6 如果備份方式為完全模式,採用下列恢復方法

    若從本地檔案恢復,使用如下命令:
    imp system/manager@oracle rows=y indexes=n commit=y buffer=50000000 ignore=y full=y file=080813.dmp log=080813.log
    匯出、匯入(Export、Import)的優點:
    ●簡單易行;
    ●可靠性高;
    ●不影響資料庫的正常執行。
    缺點:
    ●只能提供到“某一時間點上”的恢復,不能最大可能的恢復資料;
    ●資料量大時,恢復較慢。

3 冷備份

    冷備份發生在資料庫已經正常關閉的情況下,當正常關閉時會提供給我們一個完整的資料庫。冷備份時將關鍵性檔案複製到另外的位置的一種說法。對於備份Oracle資訊而言,冷備份是最快和最安全的方法。

3.1 冷備份中必須複製的檔案包括

    所有資料檔案
    所有控制檔案
    所有聯機REDO LOG檔案
    Init.ora檔案(可選)
    值得注意的是冷備份必須在資料庫關閉的情況下進行,當資料庫處於開啟狀態時,執行資料庫檔案系統備份是無效的。

3.2下面是做冷備份的完整例子

3.2.1 關閉資料庫
    sqlplus /nolog
    sql>connect /as sysdba
    sql>shutdown normal;
3.2.2 用複製命令備份全部的資料檔案、重做日誌檔案、控制檔案、初始化引數檔案
    可以透過命令select v$tablespace.name,v$datafile.name from v$tablespace, v$datafile where v$tablespace.ts#= v$datafile.ts#;檢視相關檔案的具體位置。或透過檢視Enterprise Manager Console 的初始化引數知道這些檔案的具體位置。
3.2.3 重啟Oracle資料庫
    sql>startup

3.3 冷備份的優點

    ●非常快速、容易的備份方法,只需簡單複製檔案;
    ●非常容易恢復到某個時間點上,只需將檔案再複製回去;
    ●能與歸檔方法相結合,做資料庫“最佳狀態”的恢復;
    ●低度維護,高度安全。

3.4 缺點

    ●單獨使用時,只能提供到“某一時間點上”的恢復;
    ●實施冷備份的全過程中,資料庫必須是關閉狀態,因此會影響正常工作;
    ●不能按表或按使用者恢復。

4 熱備份

    熱備份是在資料庫執行的情況下,採用archivelog mode方式備份資料庫的方法。

4.1 檢視歸檔模式

    SQL> archive log list;
    資料庫日誌模式      存檔模式
    自動存檔             啟用
    存檔終點            c:\oracle\ora92\RDBMS
    最早的概要日誌序列     11
    下一個存檔日誌序列     13
    當前日誌序列           13
    SQL>

4.2 如資料庫在非歸檔模式下的,如下命令更改非歸檔模式為歸檔模式

    SQL> shutdown immediate; (立即關閉資料庫)
    SQL> startup mount (啟動例項並載入資料庫,但不開啟)
    SQL> alter database archivelog; (更改資料庫為歸檔模式)
    SQL> alter database open; (開啟資料庫)
    SQL> alter system archive log start; (啟用自動歸檔
    SQL> exit (退出)

4.3 一旦資料庫執行在archivelog狀態下,就可以做備份了熱備份的命令檔案由三部分組成

    4.3.1 資料檔案的備份
    (1) 設定表空間為備份狀態
SQL>alter tablespace rlgl begin backup;
表空間已更改。
    (2) 備份表空間的資料檔案
用作業系統的複製複製資料檔案。
    (3) 回覆表空間為正常狀態
SQL> alter tablespace sysbs end backup
表空間已更改。
    4.3.2 備份歸檔日誌檔案
    在sqlplus上執行alter system switch logfile命令來強迫日誌切換,以便所有的日誌都被歸檔。透過在執行archive log list命令獲取當前的日誌順序號,從最早的概要日誌序列到當前日誌序列的聯機redo日誌都應該複製出來。
4.3.3 使用alter database backup controlfile to trace;命令獲得控制檔案的一個備份,可以到%oracle_base%\admin\ %oracle_sid%\udump目錄中尋找最新的跟蹤檔案,其中有重建控制檔案的全部命令。

4.4 恢復例項,假設表空間JNTH中的資料檔案jinth1.dbf損壞

    SQL> startup
    ORACLE 例程已經啟動。
    Total System Global Area 135338868 bytes
    Fixed Size 453492 bytes
    Variable Size 109051904 bytes
    Database Buffers 25165824 bytes
    Redo Buffers 667648 bytes
    資料庫裝載完畢。
    ORA-01157: 無法標識/鎖定資料檔案 8 - 請參閱 DBWR 跟蹤檔案
    ORA-01110: 資料檔案 8: ’E:\ORACLE\ORADATA\ JNTH1.DBF’
    恢復過程:
    (1)可以先將損壞的表空間檔案離線。
    SQL> alter database datafile ’e:\oracle\oradata\jnth1.dbf’ offline;
    資料庫已更改。
    (2)開啟資料庫。
    SQL> alter database open;
    資料庫已更改。
    (3)將複製的檔案jnth1.dbf複製回先前的資料夾E:\ORACLE\ORACLEDATA。
    (4)恢復資料庫檔案。
    SQL>recover datafile ’e:\oracle\oradata\jnth1.dbf’;
    介質恢復完成。
    (5)關閉資料庫。
    SQL>shutdown immediate;
    (6)重新開啟資料庫。
    SQL> startup;

4.5 熱備份的優點

    ●可在表空間或資料庫檔案級備份備份的時間短;
    ●備份時資料庫仍可使用;
    ●可以恢復到某一時間點上;
    ●恢復快速。

4.6 缺點

    ●不能出錯,否則將不能正常恢復資料;
    ●維護較困難,需要一定的oracle資料庫知識。

5 RMAN ( Recovery Manager, 恢復管理器 )備份恢復

    RMAN ( Recovery Manager, 恢復管理器 )是從Oracle8開始提供的一套用於備份和恢復的有利工具,它有兩種使用介面:GUI(圖形使用者介面)和CLI(命令列介面)。使用RMAN可以完成Oracle 資料庫備份和恢復的各種任務。現在許多oracle 備份恢復軟體的核心實際上就是RMAN(例如 VERITAS NetBackup 備份軟體)。

5.1 切換歸檔模式

    C:\sqlplus /nolog (啟動sqlplus)
    SQL> conn / as sysdba (以DBA身份連線資料庫)
    SQL> archive log list (檢視是否是歸檔模式,更改歸檔模式在熱備份時已介紹)

5.2 連線

    C:\rman (啟動恢復管理器,oracle是服務名,根據自己的實際情況設定)

5.3 基本設定

    RMAN> configure default device type to disk; (設定預設的備份裝置為磁碟)
    RMAN> configure device type disk parallelism 2; (設定備份的並行級別,通道數)
    RMAN> configure channel 1 device type disk format 'e:\backup1\backup_%U'; (設定備份的檔案格式,只適用於磁碟裝置)
    RMAN> configure channel 2 device type disk format 'e:\backup2\backup_%U'; (設定備份的檔案格式,只適用於磁碟裝置)
    RMAN> configure controlfile autobackup on; (開啟控制檔案與引數檔案的自動備份
    RMAN> configure controlfile autobackup format for device type disk to 'e:\backup1\ctl_%F'; (設定控制檔案與引數檔案自動備份的檔案格式)

5.4 檢視所有引數設定

    RMAN> show all;

5.5 檢視資料庫方案報表

    RMAN> report schema;

5.6 備份全庫及控制檔案、引數檔案與所有歸檔的重做日誌,並刪除舊的歸檔日誌

    RMAN> backup database plus archivelog delete input;

5.7 備份表空間及歸檔的重做日誌,並刪除舊的歸檔日誌

    RMAN> backup tablespace system plus archivelog delete input;

5.8 備份歸檔日誌

    RMAN> backup archivelog all delete input;

5.9 複製資料檔案

    RMAN> copy datafile 1 to 'e:\backup1\datafile\1.ora';

5.10 檢視備份和檔案複本

    RMAN> list backup;

5.11驗證備份

    RMAN> validate backupset 3;

5.12從自動備份中恢復引數檔案

    RMAN> shutdown immediate; (立即關閉資料庫)
    RMAN> startup nomount; (啟動例項到nomount 狀態)
    RMAN> restore controlfile to '/backup1' from autobackup; (從自動備份中恢復控制檔案)

5.13 恢復和復原全資料庫

    RMAN> shutdown immediate; (立即關閉資料庫)
    RMAN> exit (退出)
    將資料檔案jnth1.ora,
    C:\ ren E:\oracle\oradata\oracle\jnth1.ora jnth1.bak;   
    C:\ ren E:\oracle\oradata\oracle\jnth2.ora jnth2.bak;   
    C:\rman (啟動恢復管理器)
    RMAN> startup pfile=C:\oracle\admin\oracle\pfile\ initoracle.ora (指定初始化引數檔案啟動資料庫)
    RMAN> restore database; (還原資料庫)
    RMAN> recover database; (恢復資料庫)
    RMAN> alter database open; (開啟資料庫)

5.14 Rman備份的優點

    ●支援線上熱備份
    ●支援多級增量備份
    ●減小所需要備份量;
    ●備份,恢復使用簡單。

5.15 Rman備份的缺點

    ●維護較複雜,需要一定的專業知識。

6 結束語

    本文根據多年的工作經驗就一些基礎性的知識進行探討,在實際工作中利用這些基礎知識,結合作業系統的計劃任務或第三方的軟體就可以實現資料的自動、定時、定量的備份與恢復。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11134849/viewspace-659928/,如需轉載,請註明出處,否則將追究法律責任。

相關文章