【問題處理】ORA-01113 file xxx need media recovery

恩強Boy發表於2021-02-01

問題說明

在資料庫以外當機或執行備份恢復時,可能會遇到ORA-01113 問題。 ORA-01113 錯誤通常伴隨著 ORA-01110 錯誤一起出現, ORA-01110 錯誤指向著報錯的檔名

ORA-01113: file 21  needs media recovery

ORA-01110: data file 21 : '/ u01/app/oracle/oradata / users02 .dbf'

原因分析

ORA-01113 錯誤表明,與控制檔案和其他資料檔案相比,該資料檔案不是最新的。 Oracle 的架構是極其緊密的,所有的資料庫檔案(包括資料檔案、 redolog 和控制檔案)在資料庫開啟或檢查點結束時必須同步。這就意味著所有的資料檔案的檢查點 SCN 必須相同。如果有一個特定的資料檔案不滿足這個情況,就會報 ORA-01113 錯誤。

例如,當將表空間置於熱備份時,其所有的資料檔案的檢查點SCN 將以當前值凍結,直到發出 end backup 指令。如果資料庫處於熱備時崩潰,你嘗試重新啟動它而不做恢復,那麼該表空間的其中一個資料檔案很有可能會報 ORA-01113 錯誤,因為它的 SCN 可能比其他表空間中的控制檔案和資料檔案的 SCN 要低。

同樣,使資料檔案offline 也會導致它的檢查點 SCN 被凍結。如果您只是嘗試 online 該檔案而不做任何恢復,那它的 SCN 可能比 redo log 檔案的 SCN 舊的多,就會產生 ORA-01113 錯誤。

解決方法

在恢復前執行以下操作

1)  啟動到mount 狀態

SQL> startup mount;

2)  執行以下查詢

SQL> SELECT V1.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE# FROM V$LOG V1, V$LOGFILE V2 WHERE V1.GROUP# = V2.GROUP# ;

這個查詢將列出所有的redolog 和它們各自的順序和最先更改的編號,接下來的步驟取決於發生 ORA-01113 的原因,我們依次討論

可能的原因及應對方法

發生ORA-01113 可能的原因如下:

1.  資料庫例項崩潰時,表空間處於熱備份狀態

2.  發生在從備份中恢復資料檔案或表空間後的啟動時

3.  嘗試online 資料檔案或表空間時

4.  當使用using backup controlfile ”選項做不完全恢復時

情況一:資料庫例項崩潰時,表空間處於熱備份狀態

1)  開啟資料庫至Mount

SQL> startup mount;

2)  執行以下查詢確定那個資料檔案處於熱備份狀態

SQL> SELECT V1.FILE#, NAME FROM V$BACKUP V1, V$DATAFILE V2 WHERE V1.STATUS = 'ACTIVE' AND V1.FILE# = V2.FILE# ;

3)  針對上面查詢的結果,執行以下內容

SQL> ALTER DATABASE DATAFILE ' filename ' END BACKUP;

4)  開啟資料庫

SQL> alter database open;

情況二:發生在從備份中恢復資料檔案或表空間後的啟動時

1)  開始資料庫至mount

SQL> startup mount;

2)  恢復資料檔案

SQL> recover datafile ' filename ';

如果恢復超過一個資料檔案,執行以下

SQL> recover tablespace tablespace_name;

如果恢復超過一個表空間,執行以下

SQL> recover database;

3)  確認每一個歸檔日誌,直到收到 "Media recovery complete"

如果系統提示輸入一個不存在的歸檔日誌,Oracle 可能需要一個或多個 redolog 來進行恢復。將 ORA-280 訊息中引用的序列號和 redolog 中的序列號進行比較。然後輸入序列號與請求的序列號想匹配的 redolog 的完整路徑。

4)  開啟資料庫

SQL> alter database open;

情況三:嘗試online 資料檔案或表空間時

1)  恢復資料檔案

SQL> recover datafile ' filename ' ;

如果恢復一個表空間,執行

SQL> recover tablespace tablespace_name;

如果恢復一個資料庫,執行

SQL> recover database;

2)  確認每一個歸檔日誌,直到收到 "Media recovery complete"

如果系統提示輸入一個不存在的歸檔日誌,Oracle 可能需要一個或多個 redolog 來進行恢復。將 ORA-280 訊息中引用的序列號和 redolog 中的序列號進行比較。然後輸入序列號與請求的序列號想匹配的 redolog 的完整路徑。

3)  開始資料庫

SQL> alter database open;

情況四:當使用using backup controlfile ”選項做不完全恢復時

如果使用recover database using backup controlfile ”選項恢復資料,而沒有指定“ until cancel ”選項,那麼在“ alter database open resetlogs ”時,可能會遇到 ORA-01113 錯誤。

1)  再次恢復資料庫

SQL> recover database using backup controlfile until cancel;

2)  過程中透過發出cancel ”命令取消恢復

3)  開啟資料庫

SQL> alter database open resetlogs;

 

 

---- end ----

 

 

 

 

 

 

 


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

相關文章