【ARCHIVE】模擬因無法歸檔導致日誌無法切換故障及一般處理方法兩則
在歸檔模式下,如果系統無法順利完成歸檔,當日志切換時,即將被複寫的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 --
模擬一下這個故障場景,給出兩種一般的處理方法。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 『無為則無心』Python日誌 — 67、logging日誌模組處理流程Python
- Standby_file_management引數導致日誌無法應用
- 無法訪問GitHub網站及無法正常操作倉庫的處理方法Github網站
- Oracle DataGuard歸檔日誌丟失處理方法Oracle
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- win10輸入法切換不了中文怎麼處理_win10輸入法無法切換中文如何修復Win10
- mysql因為事務日誌問題無法啟動MySql
- 磁碟IO故障導致的SQLServer資料庫無法寫入SQLServer資料庫
- 『無為則無心』Python日誌 — 65、日誌模組logging的使用Python
- oracle rman備份歸檔日誌需要先切換日誌嗎Oracle
- 神奇的DEBUG:因為異常導致MongoDB容器無法啟動MongoDB
- 因為跨域問題導致的無法讀取 response header跨域Header
- 『無為則無心』Python日誌 — 64、Python日誌模組logging介紹Python
- Laravel artisan 寫入日誌的使用者和 fpm 不一致,導致無法寫入日誌問題Laravel
- wpf popup導致MouseLeftButtonUp無法觸發
- win10平板模式無法切換如何處理_win10平板模式切換不了怎麼解決Win10模式
- MySQL Linux伺服器快照克隆引起的binlog日誌無法正常刪除導致檔案系統滿MySqlLinux伺服器
- 模擬一則ORA-600 [4194][][]故障並處理
- StarRocks-FE無法啟動,日誌:
- ppt放映播放時,已經設定單擊滑鼠時切換,但是點選滑鼠和鍵盤扔無法切換,處理方法:
- 物化檢視日誌無法正常清除的解決方法
- ADG無法切換:報錯 ORA-16467
- DevExpress 的LayoutControl控制元件導致資源無法釋放的問題處理devExpress控制元件
- Oracle 11.2.0.4 Dataguard兩則故障處理Oracle
- SQL Server 因設定最大記憶體過小導致無法啟動SQLServer記憶體
- 無法刪除pod的處理
- 『無為則無心』Python日誌 — 66、將日誌資訊儲存到檔案中Python
- MySQL時區導致無法產生表MySql
- win10無法更新1803怎麼辦?顯示卡導致無法更新1803的解決方法Win10
- @Transactional開啟事務導致AbstractRoutingDataSource動態資料來源無法切換的解決方案
- windows10輸入法無法切換怎麼辦 win10筆記本輸入法切換不瞭解決方法WindowsWin10筆記
- GitHub 又出故障了之惡搞版,部分使用者因為降級導致無法訪問私有倉庫Github
- cmd批處理無法使用 提示windows找不到檔案Windows
- 本地無法複製檔案到windows server 系統的處理辦法WindowsServer
- Mac環境下MySQL無法啟動的處理方法MacMySql
- 由於無法分配ip而導致的FailedCreatePodSandBoxAI
- 如何處理快取導致的無效曝光快取
- oracle adg備庫歸檔滿了無法同步Oracle
- dell win10無法切換揚聲器怎麼辦_dell win10無法切換揚聲器如何修復Win10