啟動SCN不一致的資料庫

kewin發表於2008-03-13

在對NOARCHIVE 的資料庫做恢復時,需要還原controlfiledatafile,如果僅僅是還原datafile,在開啟資料庫時,會提示出錯:

RMAN> alter database open;

 

RMAN-00571: ====================================

RMAN-00569: ======== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: =====================================================

RMAN-03002: failure of alter db command at 03/13/2008 10:40:29

ORA-01113: file 1 needs media recovery

ORA-01110: data file 1: '/backup1/data/test/oradata/system01.dbf'

 

這是因為在OPEN資料庫時,ORACLE會用controlfile的檔案頭記錄的SCNdatafileSCN去做對比,如果發現不一致,那要用日誌來做恢復,沒有歸檔日誌,那就無從恢復可以。

 

如果什麼方法都嘗試過了,還是無法正常啟動ORACLE,但又想找回現在資料庫的資料,那該如何處理。

啟用隱藏引數_allow_resetlogs_corruption 來做強制啟動:

1.修改init.ora 引數檔案:

加上:

_allow_resetlogs_corruption='TURE'

 

2. pfile 來啟動oracle資料庫:

SQL> startup mount pfile=$ORACLE_HOME/dbs/inittest.ora

ORACLE instance started.

 

Total System Global Area  757040840 bytes

Fixed Size                   730824 bytes

Variable Size             352321536 bytes

Database Buffers          402653184 bytes

Redo Buffers                1335296 bytes

Database mounted.

SQL> alter database open resetlogs;

 

Database altered.

 

至此ORACLE資料庫處於open狀態,但是該資料庫處於非常瘋狂的狀態。

Open後,系統的LOGFILESCN為重置為datafileSCN號。

 在做不完整恢復時的log資訊:

SQL> select * from v$log;

 

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------------

         1          1         31   10485760          1 NO  INACTIVE                 70812 13-MAR-08

         2          1         32   10485760          1 NO  CURRENT                  70814 13-MAR-08

         3          1         30   10485760          1 NO  INACTIVE                 70809 13-MAR-08

 

強制啟動後的log資訊,注意當前的FIRST_CHANGE#變小了,而且非currentLOG變為0.

SQL> select * from v$log;

 

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------------

         1          1          0   10485760          1 YES UNUSED                       0

         2          1          1   10485760          1 NO  CURRENT                  70681 13-MAR-08

         3          1          0   10485760          1 YES UNUSED                       0

這樣一種狀態的資料庫處於瘋狂中,因為某些檔案中含有比當前SCN號還要大的資料塊,結果會導致系統報大量ORA-00600錯誤。唯一可以做的是,整個資料庫匯出,重建資料庫

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

相關文章