oracle等待事件之enq: CF – contention
Enqueue 是一種保護共享資源的鎖定機制,避免因併發操作而損壞資料,Enqueue 採用排隊機制,即 FIFO(先進先出)來控制資源的使用。在任何需要讀取控制檔案的動作時,就會發生等待事件enq: CF – contention,CF locks被用來序列化controlfile事務,在讀和寫控制檔案的時候使用該鎖。通常該鎖的分配時間非常短,比如在下面事件中會分配該鎖,那麼也就可能發生enq: CF – contention等待事件:
l Checkpoint
l Redo Logfile的切換
l Redo lofileg的歸檔
l 執行例項恢復
l 操作redo logfile
l 熱備開始和結束
l Nologging 事物的DML操作
如果某個事物設定了nologging屬性,那麼如下動作更容易產生該等待事件:
direct load (SQL*Loader) direct-load INSERT CREATE TABLE ... AS SELECT CREATE INDEX ALTER TABLE ... MOVE PARTITION ALTER TABLE ... SPLIT PARTITION ALTER INDEX ... SPLIT PARTITION ALTER INDEX ... REBUILD ALTER INDEX ... REBUILD PARTITION INSERT, UPDATE, and DELETE on LOBs in NOCACHE NOLOGGING mode stored out of line |
查詢該等待事件的holder
select l.sid, p.program, p.pid, p.spid, s.username, s.terminal, s.module, s.action, s.event, s.wait_time, s.seconds_in_wait, s.state from v$lock l, v$session s, v$process p where l.sid = s.sid and s.paddr = p.addr and l.type='CF' and l.lmode >= 5; |
查詢該等待事件的waiter
select l.sid, p.program, p.pid, p.spid, s.username, s.terminal, s.module, s.action, s.event, s.wait_time, s.seconds_in_wait, s.state from v$lock l, v$session s, v$process p where l.sid = s.sid and s.paddr = p.addr and l.type='CF' and l.request >= 5; |
原因分析及解決辦法:
如果holder是後臺程式,比如lgwr,ckpt,arcn等,那麼檢查redo log大小,切換頻次,檢查fast_start_mttr_target的設定,檢查歸檔路徑是否可用。
如果是holder是前臺程式,那麼大都是由於nologging的事物上正在發生DML或者DDL,此時由於nologging屬性,那麼oracle需要向控制檔案中記錄unrecoverable SCN,典型的是伴隨enq: CF – contention的通常還有control file parallel write,這個會話在寫的過程中持有CF locks,其它會話如果也要更新控制檔案的話,那麼就要等待了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31480688/viewspace-2655913/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle等待事件之enq: TM – contentionOracle事件ENQ
- oracle 11.2.0.4 rac叢集等待事件enq: TM - contentionOracle事件ENQ
- 等待事件enq: TX - row lock contention事件ENQ
- [20220518]enq FU - contention等待事件.txtENQ事件
- 故障排除 | enq:TX - index contention等待事件ENQIndex事件
- 故障處理】佇列等待之enq: US - contention案例佇列ENQ
- 【故障處理】佇列等待之enq: US - contention案例佇列ENQ
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- Oracle Enqueues Wait Events 三 enq: TX - row lock contentionOracleENQAI
- enq: TX - allocate ITL entry等待事件分析ENQ事件
- enq: TX - row lock contentionENQ
- ORACLE 如何診斷高水位爭用(enq: HW – contention)OracleENQ
- 關於enq: TX - allocate ITL entry等待事件ENQ事件
- 【TUNE_ORACLE】等待事件之IO等待“read by other session”Oracle事件Session
- 【TUNE_ORACLE】等待事件之IO等待“direct path read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path write”Oracle事件
- [20200120]oracle wait event "enq: SQ – contention" and DBA_DB_LINK_SOURCES.txtOracleAIENQ
- 【TUNE_ORACLE】等待事件之IO等待“db file scattered read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path write temp”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file sequential read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file parallel write”Oracle事件Parallel
- oracle等待事件之cursor:pin S wait on XOracle事件AI
- 【TUNE_ORACLE】等待事件之“library cache lock”Oracle事件
- 【TUNE_ORACLE】等待事件之“buffer busy waits”Oracle事件AI
- 【TUNE_ORACLE】等待事件之“library cache pins”Oracle事件
- 奇異的enq: TX - row lock contentionENQ
- enq: TX - index contention基礎理論ENQIndex
- ORACLE 常見等待事件Oracle事件
- 效能問題,AWR High Event enq: US - contentionENQ
- Oracle優化案例-系統切換引起的enq: SQ - contention(二十八)Oracle優化ENQ
- Oracle常見UNDO等待事件Oracle事件
- enq: TX - index contention故障修復一例ENQIndex
- RAC中的enq: TS等待ENQ
- 【TUNE_ORACLE】等待事件之日誌等待“log file sync”Oracle事件
- 【TUNE_ORACLE】等待事件之日誌等待“log file parallel write”Oracle事件Parallel
- Oracle面試寶典-等待事件篇Oracle面試事件
- Systematic Latch Contention Troubleshooting in OracleOracle
- Solidity事件,等待事件Solid事件