日誌切換失敗,數據庫hang住,造成數據庫假死

快要下班了,研發打電話過來反饋數據庫連不上了,沒辦法,按照常規檢查看一下

1、查看監聽狀態 lsnrctl status 一切正常

2、查看數據庫狀態 sqlplus / as sysdba 發現空實例

3、啟動實例,報out of memory錯誤,啟動不起來

1、查看oracle警報日誌發現報了一個cannot allocate new log 日誌切換失敗,造成數據庫hang住,假死。


日誌切換失敗,數據庫hang住,造成數據庫假死

5、遇到這類問題,不要著急重啟數據庫,一般過一會數據庫就會正常。

6、實際上是個比較常見的錯誤。通常來說是因為在日誌被寫滿時會切換 日誌組,這個時候會觸發一次checkpoint,DBWR會把內存中的髒塊往數據文件中寫,只要沒寫結束就不會釋放這個日誌組。如果歸檔模式被開啟的 話,還會伴隨著ARCH寫歸檔的過程。如果redo log產生的過快,當CPK或歸檔還沒完成,LGWR已經把其餘的日誌組寫滿,又要往當前的日誌組裡面寫redo log的時候,這個時候就會發生衝突,數據庫就會被掛起。並且一直會往alert.log中寫類似上面的錯誤信息。

7、如果只是偶然情況,可以暫時忽略,如果出現很頻繁,則可以從以下幾個方面調整:

1) 增加更多redo log文件

2)創建更大的redo log文件

3) 使DBWR更快一些,比如啟用異步I/O,使用DBWR I/O從屬進程,或者使用多個DBWR進程等等

4) 確保磁盤沒有因為競爭導致I/O變慢

5)讓checkpoint發生的更頻繁(比如縮小log checkpoint interval等),改方法僅針對Checkpoint not complete狀況。

日誌切換失敗,數據庫hang住,造成數據庫假死


分享到:


相關文章: