記一次資料庫恢復-ORA-01194

abstractcyj發表於2019-11-18

嘗試開啟資料庫時,發現打不開


SQL> alter database open resetlogs;

alter database open resetlogs

*

第 1 行出現錯誤:

ORA-01194: 檔案 1 需要更多的恢復來保持一致性

ORA-01110: 資料檔案 1: 'E:\APP\ADMINISTRATOR\ORADATA\YSORCL\SYSTEM01.DBF'



SQL> select log_mode from v$database;


LOG_MODE

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

NOARCHIVELOG


SQL>

SQL> select name from v$datafile;


NAME

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

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\SYSTEM01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\SYSAUX01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\UNDOTBS01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\USERS01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\EXAMPLE01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\YS_RP01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\YS_BI01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\YS_IND01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA02.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA03.DBF


NAME

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

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA04.DBF


已選擇12行。


SQL> select file#,to_char(checkpoint_change#,'999999999999') from v$datafile;


     FILE# TO_CHAR(CHECK

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

         1     138620706

         2     138620706

         3     138620706

         4     138620706

         5     138620706

         6     138620706

         7     138620706

         8     138620706

         9     138620706

        10     138620706

        11     138620706


     FILE# TO_CHAR(CHECK

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

        12     138620706


已選擇12行。


SQL> select file#,online_status,to_char(change#,'999999999999') from v$recover_file;


未選定行


SQL> select file#,to_char(checkpoint_change#,'999999999999') from v$datafile_header;


     FILE# TO_CHAR(CHECK

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

         1     138620706

         2     138620706

         3     138620706

         4     138620706

         5     138620706

         6     138620706

         7     138620706

         8     138620706

         9     138620706

        10     138620706

        11     138620706


     FILE# TO_CHAR(CHECK

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

        12     138620706


已選擇12行。


SQL> desc v$LOG

 名稱                                      是否為空? 型別

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

 GROUP#                                             NUMBER

 THREAD#                                            NUMBER

 SEQUENCE#                                          NUMBER

 BYTES                                              NUMBER

 BLOCKSIZE                                          NUMBER

 MEMBERS                                            NUMBER

 ARCHIVED                                           VARCHAR2(3)

 STATUS                                             VARCHAR2(16)

 FIRST_CHANGE#                                      NUMBER

 FIRST_TIME                                         DATE

 NEXT_CHANGE#                                       NUMBER

 NEXT_TIME                                          DATE


SQL> select group#, first_change# from v$log;


    GROUP# FIRST_CHANGE#

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

         1     138617722

         3     138620706

         2     138619288


SQL> select member from v$logfile;


MEMBER

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

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO03.LOG

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO02.LOG

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO01.LOG


SQL> recover database using backup controlfile until cancel;

ORA-00279: 更改 138620706 (在 11/16/2019 05:19:55 生成) 對於執行緒 1 是必需的

ORA-00289: 建議:

E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\YSORCL\ARCHIVELOG\2019_11_18\O1_MF_1_93

0_%U_.ARC

ORA-00280: 更改 138620706 (用於執行緒 1) 在序列 #930 中



指定日誌: {<RET>=suggested | filename | AUTO | CANCEL}

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO03.LOG

已應用的日誌。

完成介質恢復。

SQL>

SQL>

SQL> alter database open reset logs;

alter database open reset logs

                    *

第 1 行出現錯誤:

ORA-02288: 無效的 OPEN 模式



SQL> alter database open resetlogs;


資料庫已更改。


SQL>

SQL> select open_mode, log_mode, name from v$database;


OPEN_MODE            LOG_MODE     NAME

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

READ WRITE           NOARCHIVELOG YSORCL


SQL>

SQL>


這個資料庫最初的問題是因為控制檔案頭衝突,重建了控制檔案。重建之後,開啟提示此錯誤。

問題關鍵在於找出控制檔案與資料檔案,重做日誌檔案的SCN。此處發現,v$datafile_header的checkpoint_change#與

重做日誌檔案組3的first_change#是匹配的。


如果還不行,估計只有大招:_allow_resetlogs_corruption= TRUE



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

相關文章