恢復之非歸檔模式下資料庫非正常關閉的備份與恢復
產品資料庫不會處於非歸檔模式下。而且冷備份的前提是資料庫正常關閉,因此,一般不會存在使用非正常關閉的備份來進行資料庫的恢復。
本文只是對這種特殊的情況進行一下測試,在實際中應該不會碰到這種情況。
首先,在另一個SESSION迴圈插入資料,然後非正常關閉資料庫,並在這種情況下備份資料庫:
SQL> CONN /@TEST1 AS SYSDBA
已連線。
SQL> SHUTDOWN ABORT
ORACLE 例程已經關閉。
SQL> HOST COPY F:ORACLEORADATATEST1* F:ORACLEBACKUPTEST120060305
Oracle文件並不推薦備份聯機日誌檔案,但是對於非歸檔模式下,非正常關閉的資料庫來說,備份了聯機日誌檔案至少可以保證資料庫可以一致性開啟。
開啟資料庫,進行資料的修改:
SQL> STARTUP
ORACLE 例程已經啟動。
Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> SELECT COUNT(*) FROM YANGTK.TEST;
COUNT(*)
----------
20001
SQL> DELETE YANGTK.TEST WHERE ID > 1;
已刪除19000行。
SQL> COMMIT;
提交完成。
SQL> ALTER SYSTEM SWITCH LOGFILE;
系統已更改。
下面利用剛才生成的備份進行資料庫的恢復,由於資料庫只進行了少量的操作,備份之後所有的操作都存在於聯機日誌檔案中,且聯機日誌檔案還沒有被重用。
這個時候的恢復可以選擇是否恢復備份的聯機日誌檔案。如果不恢復備份的聯機日誌檔案,資料庫是可以不丟失資料開啟的:
SQL> SHUTDOWN IMMEDIATE
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> HOST COPY F:ORACLEBACKUPTEST120060305*.CTL F:ORACLEORADATATEST1
SQL> HOST COPY F:ORACLEBACKUPTEST120060305*.DBF F:ORACLEORADATATEST1
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 USING BACKUP CONTROLFILE
ORA-00279: 更改 36693083 (在 03/05/2006 10:28:00 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORACLE920RDBMSARC01042.001
ORA-00280: 更改 36693083 對於執行緒 1 是按序列 # 1042 進行的
指定日誌: {
F:ORACLEORADATATEST1REDO01.LOG
ORA-00310: 存檔日誌包含序列 1043;要求序列 1042
ORA-00334: 歸檔日誌: 'F:ORACLEORADATATEST1REDO01.LOG'
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: 更改 36693083 (在 03/05/2006 10:28:00 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORACLE920RDBMSARC01042.001
ORA-00280: 更改 36693083 對於執行緒 1 是按序列 # 1042 進行的
指定日誌: {
F:ORACLEORADATATEST1REDO03.LOG
ORA-00279: 更改 36724400 (在 03/06/2006 00:57:42 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORACLE920RDBMSARC01043.001
ORA-00280: 更改 36724400 對於執行緒 1 是按序列 # 1043 進行的
ORA-00278: 此恢復不再需要日誌檔案 'F:ORACLEORADATATEST1REDO03.LOG'
指定日誌: {
F:ORACLEORADATATEST1REDO01.LOG
ORA-00279: 更改 36724695 (在 03/06/2006 00:59:07 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORACLE920RDBMSARC01044.001
ORA-00280: 更改 36724695 對於執行緒 1 是按序列 # 1044 進行的
ORA-00278: 此恢復不再需要日誌檔案 'F:ORACLEORADATATEST1REDO01.LOG'
指定日誌: {
F:ORACLEORADATATEST1REDO02.LOG
已應用的日誌。
完成介質恢復。
SQL> ALTER DATABASE OPEN RESETLOGS;
資料庫已更改。
查詢YANGTK.TEST表就可以發現,資料庫資料並未丟失:
SQL> SELECT COUNT(*) FROM YANGTK.TEST;
COUNT(*)
----------
1001
如果採用恢復聯機日誌檔案的方式,則資料庫可以正常開啟,但是會丟失備份之後所有的修改:
SQL> SHUTDOWN IMMEDIATE
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> HOST COPY F:ORACLEBACKUPTEST120060305* F:ORACLEORADATATEST1
SQL> STARTUP
ORACLE 例程已經啟動。
Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> SELECT COUNT(*) FROM YANGTK.TEST;
COUNT(*)
----------
20001
如果是資料庫已經執行一段時間,用於將SHUTDOWN ABORT正常開啟的聯機日誌檔案已經被重用的情況:
SQL> DELETE YANGTK.TEST WHERE ID > 15;
已刪除5000行。
SQL> COMMIT;
提交完成。
SQL> ALTER SYSTEM SWITCH LOGFILE;
系統已更改。
SQL> DELETE YANGTK.TEST WHERE ID > 10;
已刪除5000行。
SQL> COMMIT;
提交完成。
SQL> ALTER SYSTEM SWITCH LOGFILE;
系統已更改。
這個時候的恢復如果將聯機日誌檔案恢復,則和剛才的恢復操作沒有區別,資料庫恢復到備份的時刻,並利用備份時刻的聯機日誌檔案將資料庫一致性開啟。如果不恢復聯機日誌檔案,或者沒有備份當時的聯機日誌檔案:
SQL> SHUTDOWN IMMEDIATE
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> HOST COPY F:ORACLEBACKUPTEST120060305*.CTL F:ORACLEORADATATEST1
SQL> HOST COPY F:ORACLEBACKUPTEST120060305*.DBF F:ORACLEORADATATEST1
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: 更改 36693083 (在 03/05/2006 10:28:00 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORACLE920RDBMSARC01042.001
ORA-00280: 更改 36693083 對於執行緒 1 是按序列 # 1042 進行的
指定日誌: {
CANCEL
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 將出現如下錯誤
ORA-01194: 檔案1需要更多的恢復來保持一致性
ORA-01110: 資料檔案 1: 'F:ORACLEORADATATEST1SYSTEM01.DBF'
ORA-01112: 未啟動介質恢復
這個時候資料庫已經無法正常的開啟了,這是由於在非正常關閉情況下進行的備份。這時候或者利用更早的備份進行不完整恢復,或者提供備份時刻備份的聯機重做日誌。
SQL> RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE
ORA-00279: 更改 36693083 (在 03/05/2006 10:28:00 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: F:ORACLEORACLE920RDBMSARC01042.001
ORA-00280: 更改 36693083 對於執行緒 1 是按序列 # 1042 進行的
指定日誌: {
F:ORACLEBACKUPTEST120060305REDO03.LOG
已應用的日誌。
完成介質恢復。
SQL> ALTER DATABASE OPEN RESETLOGS;
資料庫已更改。
SQL> SELECT COUNT(*) FROM YANGTK.TEST;
COUNT(*)
----------
20001
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/235507/viewspace-548688/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 備份&恢復之四:非歸檔模式下的備份與恢復模式
- rman 非歸檔模式下停庫備份與恢復模式
- 恢復之非歸檔模式下的恢復模式
- rman 非歸檔模式下open庫備份與mount恢復模式
- 【備份恢復】非歸檔模式下丟失任意資料檔案 恢復操作模式
- 非歸檔模式恢復資料庫模式資料庫
- 關閉資料庫的備份與恢復資料庫
- 非歸檔模式下恢復資料庫兩例模式資料庫
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- 【備份恢復】無備份線上恢復非關鍵資料檔案
- 【備份恢復】歸檔模式下丟失系統關鍵資料檔案 利用RMAN備份恢復模式
- 備份與恢復--從備份的歸檔日誌中恢復資料
- 【備份恢復】noarchive模式下使用增量備份恢復資料庫Hive模式資料庫
- rman恢復--歸檔模式有備份,丟失資料檔案的恢復模式
- rman恢復--歸檔模式無備份,丟失資料檔案的恢復模式
- 無備份恢復(歸檔模式)模式
- 備份與恢復:polardb資料庫備份與恢復資料庫
- 資料庫備份與恢復(使用歸檔後滾)資料庫
- 備份&恢復之八:RMAN備份歸檔模式下損壞(丟失)多個資料檔案,進行整個資料庫的恢復模式資料庫
- 【備份恢復】從備份恢復資料庫資料庫
- 恢復之資料庫關閉時的完全恢復資料庫
- 歸檔模式,恢復沒有備份的資料檔案模式
- 基於非歸檔的冷備份恢復
- 【備份與恢復】archivelog模式中資料檔案的恢復Hive模式
- 【備份與恢復】noarchivelog模式中資料檔案的恢復Hive模式
- oracle RMAN 非歸檔資料庫恢復Oracle資料庫
- 資料庫的備份與恢復資料庫
- 非歸檔無備份下控制檔案丟失的恢復
- 【備份恢復】在 ARCHIVELOG 模式下執行資料庫還原和恢復操作(源庫備份源庫恢復)Hive模式資料庫
- 恢復案例:歸檔模式下丟失全部資料檔案的恢復模式
- ORACLE非歸檔下的恢復Oracle
- 恢復案例:歸檔模式下丟失非系統表空間資料檔案的恢復模式
- Oracle備份與恢復【丟失資料檔案的恢復】Oracle
- Oracle資料庫備份與恢復之RMANOracle資料庫
- RMAN備份、恢復實驗室 之 備份篇 【歸檔模式】模式
- 歸檔模式下資料庫全恢復的過程模式資料庫
- 備份與恢復--利用備份的控制檔案恢復
- 歸檔模式下,offline表空間備份與恢復模式