在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方式打開後,需要立即對資料庫做一個全庫備份。
總結
如果覺得程式設計之家網站内容還不錯,歡迎将程式設計之家網站推薦給程式員好友。
本圖文内容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。