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數據庫后某個歸檔文件缺失,則終止。

結論:
1、適用於restore舊的控制文件,且歸檔日志和cuurrent/active redo都沒有丟失情況。如果一切歸檔日志和在線日志完好,可以不丟失數據。類似於recover database
2、當前控制文件未丟失(不需要restore舊的控制文件),此時有歸檔日志或者current/active log有丟失情況下,則終止。最大可能恢復數據
3、4:我在oracle 10.2.0.4環境下測試效果是相同的,即適用於restore舊的控制文件,在恢復到控制文件備份那刻后,系統會提示應用控制文件備份后的歸檔日志,如果沒有則停止。也是最大可能的恢復數據。

 

可以得出結果,如果有舊的數據庫備份,在歸檔日志和在線日志全部保存完好的情況下,使用recover database或recover database using backup controlfile。則不丟失數據
如果存在備份數據文件restore后,歸檔日志或者在線日志(active、current)丟失情況下,則可以恢復到丟失的前一個歸檔日志

 

until cancel就是不完全恢復
需要alter database open resetlogs
數據庫打開后需要理解做一個全庫備份

 

在線日志文件丟失:

如果正常關閉數據庫,然后啟動時報錯:

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'


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


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

數據庫已更改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM