oracle備份恢復之recover database的四條語句區別

1  recover database using backup controlfile
2  recover database until cancel
3  recover database using backup controlfile until cancel;
4  recover database until cancel using backup controlfile;數據庫

本文主要介紹如下四種 恢復方式的含義與區別:
 
1. recover database using backup controlfile

 若是丟失當前控制文件,用冷 備份的控制文件恢復的時候,用來告訴 oracle,不要以controlfile中的scn做爲恢復的終點;
 
2. recover database until cancel
 
若是丟失current/active redo的時候,手動指定終點。
 
3. recover database using backup controlfile until cancel;
 
 若是丟失當前controlfile而且current/active redo都丟失,會先去自動應用歸檔日誌,能夠實現最大的恢復;
 
4. recover database until cancel using backup controlfile;
 
 若是丟失當前controlfile而且current/active redo都丟失,以舊的redo中的scn爲恢復終點。由於沒有應用歸檔日誌,全部會丟失數據。 
要理解recover database using backup controlfile,先理解 recover database,也就是說,不加using backup controlfile的狀況。
在普通的recover database 或者 recover tablespace, recover datafile時, Oracle會以當前controlfile所紀錄的SCN爲準,利用archive log和 redo log的redo entry, 把相關的datafile 的 block恢復到「當前controlfile所紀錄的SCN」
而某些狀況下,Oracle須要把數據恢復到比當前controlfile所紀錄的SCN還要靠後的位置(好比說,control file是backup controlfile , 或者 controlfile是根據trace create的。),這時候,就須要用using backup controlfile.   恢復就不會受「當前controlfile所記錄的SCN」的限制。這時候的限制就來自於你的語句(until time , until scn),或者可用的archive log(until cancel) ...

結果以下:
若是控制文件丟失,restore備份的控制文件後,則必須使用using backup controlfile選項。而until cancel則是不徹底恢復,即current/active redo丟失,或者從restore數據庫後某個歸檔文件缺失,則終止。oracle

結論:
一、適用於restore舊的控制文件,且歸檔日誌和cuurrent/active redo都沒有丟失狀況。若是一切歸檔日誌和在線日誌無缺,能夠不丟失數據。相似於recover database
二、當前控制文件未丟失(不須要restore舊的控制文件),此時有歸檔日誌或者current/active log有丟失狀況下,則終止。最大可能恢復數據
三、4:我在oracle 10.2.0.4環境下測試效果是相同的,即適用於restore舊的控制文件,在恢復到控制文件備份那刻後,系統會提示應用控制文件備份後的歸檔日誌,若是沒有則中止。也是最大可能的恢復數據。測試

 

能夠得出結果,若是有舊的數據庫備份,在歸檔日誌和在線日誌所有保存無缺的狀況下,使用recover database或recover database using backup controlfile。則不丟失數據
若是存在備份數據文件restore後,歸檔日誌或者在線日誌(active、current)丟失狀況下,則能夠恢復到丟失的前一個歸檔日誌spa

 

until cancel就是不徹底恢復
須要alter database open resetlogs
數據庫打開後須要理解作一個全庫備份線程

 

在線日誌文件丟失:rest

若是正常關閉數據庫,而後啓動時報錯:日誌

SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-00313: 沒法打開日誌組 1 (用於線程 1) 的成員
ORA-00312: 聯機日誌 1 線程 1:
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'blog


SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出現錯誤:
ORA-01139: RESETLOGS 選項僅在不徹底數據庫恢復後有效io


SQL> recover database until cancel;
完成介質恢復。
SQL> alter database open resetlogs;table

數據庫已更改。

相關文章
相關標籤/搜索