1. 程式人生 > >等待事件 log file switch (日誌切換)

等待事件 log file switch (日誌切換)

日誌檔案相關等待
 Redo 對於資料庫來說非常重要, 有一系列等待事件和日誌相關,通過 v$event_name 檢視可以找到這些等待事件 

SQL> select name from v$event_name where name like '%log%';

NAME

logout restrictor

LNS ASYNC archive log

LNS ASYNC end of log

log file sequential read

log file single write

log file parallel write

log buffer space

log file switch (checkpoint incomplete)

log file switch (private strand flush incomplete)

log file switch (archiving needed)

switch logfile command

log file switch completion

log file sync

log file switch( 日誌檔案切換)
log file switch 當日志文件發生切換時出現, 在資料庫進行日誌切換時,後臺程序 LGWR需要關閉當前日誌組,切換並開啟下一個日誌組,在這個切換過程中, 資料庫的所有 DML 操作都處於停頓狀態,直至這個切換完成。

log file switch

主要包含兩個子事件 log file switcharchiving needed)和 log file switchcheckpoint incomplete)。
1log file switcharchiving needed),即日誌切換( 需要歸檔), 這個等待事件出現時通常是因為日誌組迴圈寫滿以後, 在需要覆蓋先前日誌時,發現日誌歸檔尚未完成,出現該等待。由於 Redo 不能寫出,該等待出現時,資料庫將陷於停頓狀態。
出現該等待,可能表示 I/O 存在問題、歸檔程序寫出緩慢,也有可能是日誌組設定不合理等原因導致。 針對不同原因,可以考慮採用的解決辦法有:
1. 可以考慮增大日誌檔案和增加日誌組;

2. 移動歸檔檔案到快速磁碟;
3. 調整 log_archive_max_processes 引數等。


2log file switchcheckpoint incomplete),即日誌切換(檢查點未完成)。 當所有的日誌組都寫滿之後, LGWR 試圖覆蓋某個日誌檔案,如果這時資料庫沒有完成寫出由這個日誌檔案所保護的髒資料時(檢查點未完成),該等待事件出現。 該等待出現時,資料庫同樣將陷於停頓狀態。 

同時警告日誌檔案中會記錄如下資訊:
Fri Nov 18 14:26:57 2008
Thread 1 cannot allocate new log, sequence 7239
Checkpoint not complete
Current log# 5 seq# 7238 mem# 0: /opt/oracle/oradata/hsmkt/redo05.log
該等待事件通常表示 DBWR 寫出速度太慢或者 I/O 存在問題。為解決該問題, 使用者可能需要考慮增加額外的 DBWR 或者增加日誌組或日誌檔案大小。 log file switch 引起的等待都是非常重要的,如果出現就應該引起重視,並由 DBA 介入進行及時處理。