recover database的四條語句區別 .

達芬奇的夢發表於2017-03-21

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;

結果如下:
如果控制檔案丟失,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;

資料庫已更改。

此時不會有資料丟失

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31444259/viewspace-2135754/,如需轉載,請註明出處,否則將追究法律責任。

相關文章