當備庫沒有接收到一個或多個歸檔重做日誌文件的時候,歸檔丟失的情況就出現了。通常情況下歸檔重做日誌文件丟失是不需要DBA手工干預的,Data Guard會自動的發現並解決這個問題的。
在一些情況下當自動恢復沒有運行的時候就需要你手工的解決這個問題了。在Physical Standby數據庫上可以用下面的方法解決。
1、在物理備庫上通過查詢v$archive_gap視圖來查看有哪些歸檔丟失
SQL> SELECT * FROM V$ARCHIVE_GAP; THREAD# LOW_SEQUENCE# HIGH_SEQUENCE# ----------- ------------- -------------- 1 7 10
從以上語句可以看到日誌文件序列從7到10丟失了。
2、通過日誌序列查詢所丟失的文件的文件名(在主庫上查詢)
SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1 AND DEST_ID=1 AND SEQUENCE# BETWEEN 7 AND 10;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/archive_log/1_7_734705865.dbf
/u01/app/oracle/archive_log/1_8_734705865.dbf
/u01/app/oracle/archive_log/1_9_734705865.dbf
/u01/app/oracle/archive_log/1_10_734705865.dbf
3、將上面查詢到的文件拷貝的備庫的相應位置並通過ALTER DATABASE REGISTER LOGFILE語句進行註冊
SQL> ALTER DATABASE REGISTER LOGFILE
2 '/u01/app/oracle/archive_log/1_7_734705865.dbf';
在備庫上註冊完之後重新啓用redo apply就可以了。