ORACLE常見的六種RMAN恢復測試

    在ORACLE的日常管理中,需要定期對備份進行測試,以檢測備份文件是否可用。以下對常見的恢復場景進行簡單介紹。

一、備份前的準備工作

1、查看參數文件的位置

SQL> show parameter spfile;

2、查看控制文件的位置

SQL> show parameter control;

3、查看數據文件的位置

SQL> select name from v$datafile;

SQL> select file_name from dba_data_files;

4、查看臨時文件的位置

SQL> select name from v$tempfile;

SQL> select file_name from dba_temp_files;

5、查看dump目錄

SQL> show parameter dump;

6、查看數據庫名和dbid

SQL> select name,dbid from v$database;

二、執行全庫備份  

run{

backup database format 'd:\rman\full_%d_%T_%s_%p';

sql 'alter system archive log current';

sql 'alter system archive log current';

sql 'alter system archive log current';

backup archivelog all format 'd:\rman\arch_%d_%T_%s_%p';

backup current controlfile format 'd:\rman\ctl_%d_%T_%s_%p';

}

注:在備份時將控制文件自動備份打開,這樣可以自動備份控制文件和參數文件

三、常見情況的備份與恢復

1、一個數據文件損壞(非system和Undo)後的恢復實驗

    1) 進入數據文件的目錄,刪除一個數據文件(非system和Undo文件)

       注:windows環境下在未關閉數據庫的情況下數據文件無法刪除,可以先關閉數據庫再刪除文件

    2)關閉數據庫,再次啓動,會報錯

       SQL> shutdown immediate;

       SQL> startup;

    3)啓動數據庫到mount狀態,並將刪除的數據文件設置爲offline 

       SQL> alter database mount;

       SQL> alter database datafile '刪掉文件的絕對路徑+文件名' offline;

    4)打開數據庫

       SQL> alter database open;

    5)還原並恢復刪除的數據文件

       RMAN> restore datafile '刪掉文件的絕對路徑+文件名'; 

       RMAN> recover datafile '刪掉文件的絕對路徑+文件名';

    6)將刪除的數據文件設置爲online狀態

       SQL> alter database datafile '刪掉文件的絕對路徑+文件名' online;

2、所有數據文件損壞後的恢復實驗

    1)進入數據文件的目錄,刪除所有數據文件。

    2)關閉數據庫

       SQL> shutdown immediate;

    注:在windows平臺下操作時步驟1和2需要反過來執行。

    3)啓動數據庫到mount狀態

       SQL> startup mount;

    4)還原並恢復數據庫

       RMAN> restore database;

       RMAN> recover database;

    5)打開數據庫

       SQL> alter database open;

3、SYSTEM或者UNDO損壞後的恢復實驗

    1)進入數據文件的目錄,刪除SYSTEM01.DBF文件

    2)關閉數據庫。

       SQL> shutdown immediate;

    注:在windows平臺下操作時步驟1和2需要反過來執行。

    3)啓動數據庫到mount狀態

       SQL> startup mount;

    4)還原並恢復SYSTEM01.DBF文件

       RMAN> restore datafile '文件路徑/SYSTEM01.DBF';

       RMAN> recover datafile '文件路徑/SYSTEM01.DBF';

    5)打開數據庫

       SQL> alter database open;

4、參數文件損壞後的恢復實驗

    1)全庫備份:數據文件+歸檔日誌+控制文件+參數文件(過程略)

    2)一致的關閉數據庫

       SQL> shutdown immediate;

    3)刪除參數文件initSID.ora和spfileSID.ora

    4)自己在$ORACLE_HOME/dbs目錄手動創建一個參數文件:initSID.ora,內容如下

       *.db_name='數據庫名'

    5)啓動數據庫到nomount狀態

       SQL> startup nomount;

    6)恢復參數文件

       RMAN> restore spfile from 'd:\rman\c-xxxxxxxxx'; 注:c-xxxxx爲最後備份的參數文件

    7)關閉數據庫

       SQL> shutdown immediate;

    8)打開數據庫

       SQL> startup;

5、控制文件損壞後的恢復

    1)執行一次全庫備份:數據文件+歸檔日誌+控制文件+參數文件

    2)一致的關閉數據庫

       SQL> shutdown immediate;

    3)刪除所有的控制文件

    4)啓動數據庫到nomount狀態

       SQL> startup nomount;

    5)恢復控制文件    

       RMAN> restore controlfile from 'd:\rman\ctl-xxxx'; 注:ctl-xxxx爲最後備份的控制文件

    6)啓動數據庫到mount狀態

       SQL> alter database mount;

    7)恢復並還原數據庫

       RMAN> restore database;

       RMAN> recover database;

    8)打開數據庫

       SQL> alter database open resetlogs;

    注:以resetlogs方式打開後,需要立即對數據庫做一個全庫備份。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章