Oracle 數據庫告警日誌產生大量Checkpoint not complete的處理

某互聯網公司Oracle數據庫突然宕機,運維人員給的信息是數據庫無法連接,並報出了ORA-01034和ORA-27102的錯誤,如下圖所示:








接着讓運維人員把Oracle的告警日誌發來,查看該數據庫的告警日誌後沒有發現含有shutdown的任何信息(說明Oracle的實例還有Open狀態),卻發現告警日誌中有大量的“Thread 1 cannot allocate new log, sequence 320xx Checkpoint not complete”。

現象說明:

觸發checkpoint條件其中有一條是redo切換時,觀察告警日誌發現大量的日誌切換動作,說明該checkpoint就是由redo日誌切換造成的,而checkpoint會觸發DBWn將data buffer cache中的dirty block刷到datafile中,而checkpoint not complete說明data buffer cache中的dirty block還沒有寫到datafile中redo就又要切換,就會出現“Thread 1 cannot allocate new log”。

解決方法:

讓運維人員在Oracle數據庫服務器端登錄,將redo日誌加大,並增加日誌組的數量

添加日誌組:

alter database add logfile group 4 ('/data/oradata/orcl/redo04.log') size 500m;
alter database add logfile group 5 ('/data/oradata/orcl/redo05.log') size 500m;
alter database add logfile group 6 ('/data/oradata/orcl/redo08.log') size 500m;

查看當前日誌組的大小及狀態:

select group#,sequence#,bytes,members,status from v$log;

當原日誌組的狀態爲 INACTIVE 時刪除再添加成500M的redo file;

刪除日誌組的命令如下:

alter database drop logfile group n; 

修改redo日誌的大小並添加日誌組後問題解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章