Oracle數據庫突然宕機,處理方案


一、現象

  數據庫突然斷掉,無法響應,

二、分析

  查看日志發現錯誤如下(日志路徑:D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_hrpdev.log):

Mon Jan 15 13:16:00 2018
Thread 1 cannot allocate new log, sequence 8
Checkpoint not complete
  Current log# 1 seq# 7 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HRPDEV\REDO01.LOG
Thread 1 advanced to log sequence 8 (LGWR switch)
  Current log# 2 seq# 8 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HRPDEV\REDO02.LOG
Mon Jan 15 13:16:30 2018
Thread 1 cannot allocate new log, sequence 9
Checkpoint not complete
  Current log# 2 seq# 8 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HRPDEV\REDO02.LOG
Thread 1 advanced to log sequence 9 (LGWR switch)
  Current log# 3 seq# 9 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\HRPDEV\REDO03.LOG

 錯誤分析:

  當進行redo 切換的時候,會觸發checkpoint事件。Checkpoint做的事情之一是觸發DBWn把buffer cache中的Dirty cache磁盤。另外就是把最近的系統的SCN更新到datafile header和control file(每一個事務都有一個SCN),做第一件事的目的是為了減少由於系統突然宕機而需要的恢復時間,做第二件事實為了保證數據庫的一致性。

  Checkpoint will flush dirty block to datafile, 從而觸發DBWn書寫dirty buffer,等到redo log覆蓋的dirty block全部被寫入datafile后才能使用redo log(循環使用),如果DBWn寫入過慢,LGWR必須等待DBWn完成,則這時會出現“checkpoint not completed”。 所以當出現checkpoint  not competed的時候,還會伴隨cannot allocate new log的錯誤。

解決方案:

  遇到這種問題,解決方案有增加日志組 或者 增大日志文件,也可以修改checkpoint 參數使得檢查點變得頻繁點。

三、解決方案

  增加日志組或增大日志文件。

  1、查看日志狀態

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

  2、增加日志組

alter database add logfile group 4 ('D:\app\Administrator\oradata\hrpdev\redo04.log') size 500m;
alter database add logfile group 5 ('D:\app\Administrator\oradata\hrpdev\redo05.log') size 500m;
alter database add logfile group 6 ('D:\app\Administrator\oradata\hrpdev\redo06.log') size 500m;

四、參考鏈接

  http://www.cndba.cn/Dave/article/613

  http://blog.csdn.net/huaishu/article/details/16886111

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM