【ARCHIVE】模擬因無法歸檔導致日誌無法切換故障及一般處理方法兩則

secooler發表於2010-04-13
在歸檔模式下,如果系統無法順利完成歸檔,當日志切換時,即將被複寫的redo日 志沒有完成歸檔,日誌切換動作將無法完成。
模擬一下這個故障場景,給出兩種一般的處理方法。

1.模擬無法歸檔及redo日誌無法切換故障
1)修改與歸檔相關的引數
sys@secooler> alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;

System altered.

sys@secooler> show parameter db_recovery_file_dest

NAME                        TYPE         VALUE
--------------------------- ------------ --------------------------------------
db_recovery_file_dest       string       /oracle/ora11gR2/flash_recovery_area
db_recovery_file_dest_size  big integer  4G


sys@secooler> alter system set db_recovery_file_dest='' scope=spfile;

System altered.

sys@secooler> alter system set log_archive_dest_1='location=/archivelog' scope=spfile;

System altered.

2)重新啟動資料庫使引數修改生效
sys@secooler> shutdown immediate;
sys@secooler> startup;

3)修改“/archivelog”目錄的屬性,模擬歸檔無法完成
secooler@secDB /oracle/ora11gR2/oradata$ su - root
Password:
[root@secDB ~]# chown -R root:root /archivelog/

4)此時嘗試歸檔
sys@secooler> alter system archive log current;
alter system archive log current
*
ERROR at line 1:
ORA-16014: log 2 sequence# 131 not archived, no available destinations
ORA-00312: online log 2 thread 1: '/oracle/ora11gR2/oradata/secooler/redo02.log'

模擬的現象已經出現,此時系統無法完成歸檔。

5)嘗試切換日誌
sys@secooler> alter system switch logfile;
此時系統將長時間處於hang住 的狀態。

2.故障處理方法一
既然是我們模擬的故障,處理這個故障的終極方法當然是將 “/archivelog”目錄的許可權屬性歸還給oracle使用者。

3.故障處理方法二
使用極端的clear日誌方法“臨時”處理這個問題。
1)單獨開啟一個session來檢視當前日誌組狀態
sys@secooler> select GROUP#,THREAD#,MEMBERS,ARCHIVED,STATUS from v$log;

    GROUP#    THREAD#    MEMBERS ARC STATUS
---------- ---------- ---------- --- ----------------
         1          1          1 NO  CURRENT
         2          1          1 NO  INACTIVE
         3          1          1 NO  INACTIVE

可見,此時日誌即將切換到第2組日誌。

2)使用clear unarchived logfile命令清除即將覆蓋的日誌組
sys@secooler> alter database clear unarchived logfile group 2;

Database altered.

3)此時無法切換日誌的問題已經被臨時處理完畢
回到無法完成切換的視窗,檢視命令執行狀態,此時已經可以順利切換。
sys@secooler> alter system switch logfile;

System altered.

4.小結
使用clear日誌組的方法僅僅是權宜之計,在某些具體場景中可以考慮使用,但要充分理解這個動作背後對應的風險(比如恢復問題)。
當出現日誌無法切換或歸檔無法完成時,最好從長計議,發現故障的真實原因,從源頭上根除故障。

Good luck.

secooler
10.04.13

-- The End --

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

相關文章