您好,登錄后才能下訂單哦!
在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方式打開后,需要立即對數據庫做一個全庫備份。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。