資料庫恢復後開啟時遇到 ORA-01152
資料庫恢復後開啟時遇到 ORA-01152
資料庫恢復後開啟時遇到:
RMAN> alter database open resetlogs; ...... ORA-01152: file 1 was not restored from a sufficiently old backup ORA-01110: data file 1: '/oracle/u01/app/oracle/oradata/orcl/system01.dbf'
分析原因
oracle對於這個錯誤的解釋是:
ORA-01152: file 1 was not restored from a sufficiently old backup Cause: An incomplete recovery session was started, but an insufficient number of logs were applied to make the database consistent. This file is still in the future of the last log applied. The most likely cause of this error is forgetting to restore the file from a backup before doing incomplete recovery. Action: Either apply more logs until the database is consistent or restore the database file from an older backup and repeat recovery.
其實說得很清楚,就是說使用了一箇舊的控制檔案。備份裡restore出的controlfile上的scn 小於 datafile上所記錄的scn,連解決方法也說清楚了。一是以old controlfile的SCN為準,將datafile恢復到與其一致,這樣就會導致資料的不一致。二是以datafile的SCN為準,將controlfile恢復到與其一致,此時就會報ORA-01152的錯誤,然後我們通過recover database,進而利用歸檔日誌來完成controlfile和datafile的SCN一致,歸檔找不到再利用redolog來恢復。
# 恢復到超過controlfile的SCN狀態
SQL> recover database using backup controlfile; ...... Specify log: {=suggested | filename | AUTO | CANCEL} /u01/app/oracle/oradata/orcl/redo01.log Log applied. Media recovery complete.
注意:/u01/app/oracle/oradata/orcl/redo01.log是手工輸入的。
此時恢復完成,應用完所有歸檔,並重新應用了redolog,啟動資料庫到open狀態
SQL>alter database open resetlogs; Database altered.
也可以進行時間點的資料恢復(大於之前所需archivelog中的最後一個archivelog即可),例如: set until sequence 15 thread 1; 這個sequence 15 裡面的scn是大於資料庫裡面的SCN的。這樣就恢復出一致性的資料,然後用open resetlogs開啟資料即可。
利用隱含引數"_allow_resetlogs_corruption"=true開啟資料庫
更改引數
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile; System altered.
恢復資料庫
SQL> recover database using backup controlfile until cancel; SQL> alter database open resetlogs; SQL> startup force;
將內建引數改回來
SQL> alter system set "_allow_resetlogs_corruption"=false scope=spfile; System altered.
資料庫啟動到open狀態後查詢資料
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70018393/viewspace-2900239/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 測試恢復3==當資料庫處於開啟狀態時的恢復資料庫
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 資料庫資料恢復—無備份,binlog未開啟的Mysql資料庫資料恢復案例資料庫資料恢復MySql
- 第5章:從開啟的資料庫備份與恢復之從開啟的資料庫備份中完全恢復資料庫
- 恢復之資料庫關閉時的完全恢復資料庫
- 【資料庫資料恢復】MongoDB資料庫服務啟動失敗的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【資料庫資料恢復】無法啟動MongoDB服務的資料恢復案例資料庫資料恢復MongoDB
- 資料庫恢復(database restore)之兵不血刃——半小時恢復客戶資料庫資料庫DatabaseREST
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】突然斷電造成Syabse資料庫無法啟動的資料恢復案例資料庫資料恢復
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- Mongodb資料庫誤刪後的恢復MongoDB資料庫
- Backup And Recovery User's Guide-執行完全資料庫恢復-執行開啟的資料庫的恢復GUIIDE資料庫
- 資料庫資料恢復——Windows無法啟動MongoDB服務的資料恢復案例資料庫資料恢復WindowsMongoDB
- 伺服器重啟後掉線資料恢復伺服器資料恢復
- 資料庫修復資料恢復資料庫資料恢復
- 恢復資料庫資料庫
- 資料庫異機恢復開啟報錯ORA-36961資料庫
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- PostgreSQL 恢復大法 - 恢復部分資料庫、跳過壞塊、修復無法啟動的資料庫SQL資料庫
- 第5章:從開啟的資料庫備份與恢復之備份開啟的資料庫資料庫
- 第5章:從開啟的資料庫備份與恢復之從開啟的資料庫備份中進行不完全恢復資料庫
- 備份與恢復:Polardb資料庫資料基於時間點恢復資料庫
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 【資料庫資料恢復】windows server下SqlServer資料庫的資料恢復資料庫資料恢復WindowsServerSQL
- 從庫誤刪資料後 gtid 複製斷開後的恢復
- [資料庫] Navicat for MySQL定時備份資料庫及資料恢復資料庫MySql資料恢復
- Oracle資料庫UNDO損壞後的恢復Oracle資料庫
- master資料庫損壞之後的恢復AST資料庫
- 使用恢復建議恢復資料庫資料庫
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- Mysql資料庫delete刪除後資料恢復報告MySql資料庫delete資料恢復
- 定時做資料庫恢復測試sqlserver資料庫SQLServer