資料庫恢復後開啟時遇到 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 資料庫資料恢復—無備份,binlog未開啟的Mysql資料庫資料恢復案例資料庫資料恢復MySql
- 【資料庫資料恢復】MongoDB資料庫服務啟動失敗的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】無法啟動MongoDB服務的資料恢復案例資料庫資料恢復MongoDB
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】突然斷電造成Syabse資料庫無法啟動的資料恢復案例資料庫資料恢復
- Mongodb資料庫誤刪後的恢復MongoDB資料庫
- 備份與恢復:Polardb資料庫資料基於時間點恢復資料庫
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- 資料庫修復資料恢復資料庫資料恢復
- 資料庫資料恢復——Windows無法啟動MongoDB服務的資料恢復案例資料庫資料恢復WindowsMongoDB
- PostgreSQL 恢復大法 - 恢復部分資料庫、跳過壞塊、修復無法啟動的資料庫SQL資料庫
- 【資料庫資料恢復】windows server下SqlServer資料庫的資料恢復資料庫資料恢復WindowsServerSQL
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 伺服器重啟後掉線資料恢復伺服器資料恢復
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】linux系統下MYSQL資料庫資料恢復案例資料庫資料恢復LinuxMySql
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- 【資料庫資料恢復】MS SQL資料庫附加資料庫出錯怎麼恢復資料?資料庫資料恢復SQL
- sybase資料庫恢復資料庫
- Mysql資料庫delete刪除後資料恢復報告MySql資料庫delete資料恢復
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer
- 【資料庫資料恢復】sql server資料庫連線失效的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】Oracle資料庫ASM磁碟組掉線如何恢復資料?資料庫資料恢復OracleASM
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】SQL server資料庫被加密怎麼辦?如何恢復?資料庫資料恢復SQLServer加密
- 恢復MySQL資料庫建立儲存過程是遇到錯誤MySql資料庫儲存過程
- 資料庫資料恢復—附加資料庫錯誤823的SQL Server資料恢復案例資料庫資料恢復SQLServer
- 資料庫資料恢復—SQLserver資料庫中勒索病毒被加密怎麼恢復資料?資料庫資料恢復SQLServer加密
- 【資料庫資料恢復】SQL Server資料庫磁碟空間不足的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle