恢復之利用備份在所有控制檔案丟失情況下恢復(四)

zhengbao_jun發表於2009-02-11

控制檔案全部丟失的情況下,根據聯機重做日誌檔案是否可用和資料檔案是否是最新的可以分為四種不同情況,這篇文章描述的是,聯機重做日誌丟失的情況下,利用備份的資料資料和控制檔案進行恢復。


SQL> CONN /@TEST AS SYSDBA
已連線。
SQL> SHUTDOWN ABORT
ORACLE 例程已經關閉。
SQL> HOST DEL F:ORACLEORADATATEST*.CTL

SQL> HOST DEL F:ORACLEORADATATEST*.LOG

上面模擬了資料庫非正常關閉,且丟失全部控制檔案以及聯機重做日誌檔案的情況。下面通過備份的資料檔案和控制檔案進行不完全恢復:

SQL> HOST COPY F:ORACLEBACKUPTEST20060219*.CTL F:ORACLEORADATATEST

SQL> HOST COPY F:ORACLEBACKUPTEST20060219*.DBF F:ORACLEORADATATEST

SQL> STARTUP MOUNT
ORACLE 例程已經啟動。

Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
SQL> RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE
ORA-00279: 更改 45822802 (在 02/19/2006 03:07:36 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORADATATESTARCHIVEARC00001.001
ORA-00280: 更改 45822802 對於執行緒 1 是按序列 # 1 進行的


指定日誌: {=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00279: 更改 45843504 (在 02/19/2006 10:39:18 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORADATATESTARCHIVEARC00002.001
ORA-00280: 更改 45843504 對於執行緒 1 是按序列 # 2 進行的
ORA-00278: 此恢復不再需要日誌檔案 'F:ORACLEORADATATESTARCHIVEARC00001.001'


ORA-00279: 更改 45858111 (在 02/19/2006 22:11:29 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORADATATESTARCHIVEARC00003.001
ORA-00280: 更改 45858111 對於執行緒 1 是按序列 # 3 進行的
ORA-00278: 此恢復不再需要日誌檔案 'F:ORACLEORADATATESTARCHIVEARC00002.001'


ORA-00279: 更改 45858519 (在 02/19/2006 22:12:23 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORADATATESTARCHIVEARC00004.001
ORA-00280: 更改 45858519 對於執行緒 1 是按序列 # 4 進行的
ORA-00278: 此恢復不再需要日誌檔案 'F:ORACLEORADATATESTARCHIVEARC00003.001'


ORA-00279: 更改 45878533 (在 02/19/2006 22:37:48 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORADATATESTARCHIVEARC00005.001
ORA-00280: 更改 45878533 對於執行緒 1 是按序列 # 5 進行的
ORA-00278: 此恢復不再需要日誌檔案 'F:ORACLEORADATATESTARCHIVEARC00004.001'


ORA-00279: 更改 45898798 (在 02/20/2006 06:28:48 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORADATATESTARCHIVEARC00006.001
ORA-00280: 更改 45898798 對於執行緒 1 是按序列 # 6 進行的
ORA-00278: 此恢復不再需要日誌檔案 'F:ORACLEORADATATESTARCHIVEARC00005.001'


ORA-00279: 更改 45921960 (在 02/20/2006 18:57:11 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORADATATESTARCHIVEARC00007.001
ORA-00280: 更改 45921960 對於執行緒 1 是按序列 # 7 進行的
ORA-00278: 此恢復不再需要日誌檔案 'F:ORACLEORADATATESTARCHIVEARC00006.001'


ORA-00279: 更改 45952220 (在 02/21/2006 18:03:08 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORADATATESTARCHIVEARC00008.001
ORA-00280: 更改 45952220 對於執行緒 1 是按序列 # 8 進行的
ORA-00278: 此恢復不再需要日誌檔案 'F:ORACLEORADATATESTARCHIVEARC00007.001'


ORA-00279: 更改 45961329 (在 02/26/2006 15:10:04 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORADATATESTARCHIVEARC00009.001
ORA-00280: 更改 45961329 對於執行緒 1 是按序列 # 9 進行的
ORA-00278: 此恢復不再需要日誌檔案 'F:ORACLEORADATATESTARCHIVEARC00008.001'


ORA-00308: 無法開啟存檔日誌 'F:ORACLEORADATATESTARCHIVEARC00009.001'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。


SQL> RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE
ORA-00279: 更改 45961329 (在 02/26/2006 15:10:04 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORADATATESTARCHIVEARC00009.001
ORA-00280: 更改 45961329 對於執行緒 1 是按序列 # 9 進行的


指定日誌: {=suggested | filename | AUTO | CANCEL}
CANCEL
介質恢復已取消。
SQL> ALTER DATABASE OPEN RESETLOGS;

資料庫已更改。

如果重做日誌丟失,則重做日誌中包含的已提交資料會丟失。這時候需要使用UNTIL CANCEL來進行不完全恢復,在應該完所有已歸檔日誌後,發出CANCEL命令,然後以RESETLOGS方式開啟資料庫

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

相關文章