天天看點

oracle 各種恢複方式,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)進入資料檔案的目錄,删除所有資料檔案。

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檔案

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為最後備份的參數檔案

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方式打開後,需要立即對資料庫做一個全庫備份。

總結

如果覺得程式設計之家網站内容還不錯,歡迎将程式設計之家網站推薦給程式員好友。

本圖文内容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。