control file parallel write

楊奇龍發表於2010-07-08

control file  parallel write   該等等待事件為 SYSTEM/IO類,(CKPT專屬等待事件)

control file parallel等待事件往往是高日誌切換的症狀。
帶有該等待事件的會話表明它已經執行了控制檔案事務,例如:日誌切換、新增或刪除資料檔案的操作、一些LOB操作。
CKPT程式按每3秒鐘一次將位於重做日誌中的檢查點寫入控制檔案,ORACLE在資料庫恢復操作中使用該資訊。
ARCH後臺程式更新控制檔案有關歸檔日誌相關的資訊。
LGWR後臺程式在每次日誌切換產生時更新控制檔案。
顯示執行控制檔案事務的會話:

SELECT a.sid,
       decode(a.TYPE,
              'BACKGROUND',
              'BACKGROUND-' ||substr(a.program, instr(a.program, '(', 1, 1)),
              'FOREGROUND') TYPE,
       b.time_waited,
       round(b.time_waited / b.total_waits, 4) average_wait,
       round((SYSDATE - a.logon_time) * 24) hours_connected
  FROM v$session_event b, v$session a
 WHERE a.sid = b.sid
   AND b.event = 'control file parallel write'
 ORDER BY TYPE, time_waited

注一:如果LGWR程式顯示在該事件上有較高的TIME_WAITED,則意味著存在過多的日誌切換,可透過v$log檢視檢視重做日誌的大小,對於進入資料庫的事務來說,日誌可能過小。
使用下面查詢檢查日誌多長時間切換一次:

SELECT s.thread#,
       to_char(s.first_time, 'YYYY-MM-DD') creation_date,
       to_char(s.first_time, 'HH24:MI') TIME,
       s.sequence#,
       s.first_change# lowest_scn_in_log,
       s.next_change# highest_scn_in_log,
       s.recid controlfile_record_id,
       s.stamp controlfile_record_stamp
  FROM v$log_history s
 ORDER BY s.first_time

注二:如果前臺程式在control file parallel write事件上有較高的TIME_WAITED,檢查應用是否正在改變為NOLOGGING LOB。當NOLOGGING操作改變資料檔案時,為了RMAN,它位於控制檔案中的不可恢復的SCN必須被更新。
當使用NOLOGGING選項執行DML操作時,ORACLE在控制檔案中記錄不可恢復的SCN(系統提交號)。
RMAN在控制檔案中記錄備份與恢復資訊。
該事件的處理方式:對控制檔案的寫入會話被保持在CF佇列中,依次進行控制檔案寫操作。
如果對該等待事件的等待時間很顯著,則說明大量對控制檔案的寫入操作或寫入控制檔案緩慢。
引數說明:
事件號:132
事件名稱:control file parallel write
引數一:正在寫入的控制檔案號碼。
引數二:寫入控制檔案的塊總數。
引數三:I/O請求的號碼。
等待時間:無超時

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-667608/,如需轉載,請註明出處,否則將追究法律責任。

相關文章