Oracleの待機ENQイベント:CF - 競合

エンキューによるリソースの使用を制御する同時操作データ、エンキューイングメカニズム、すなわち、FIFO(先入れ先出し)に損傷に対する共有リソースを保護するためのロック機構です。すべてのアクションは、制御ファイルを読むために必要がある場合、イベントENQの発生を待ちます:CF - 競合、CFロックは、制御ファイルのトランザクションをシリアル化するとき、読み取りロックを使用して制御ファイルを書き込むために使用されています。ロックは通常、時間を割り当てられている、それはENQ起こるかもしれない、ロックに配分されるように、次のイベントのように、非常に短いです:CF - 競合の待機イベントを:

リットルの   チェックポイント

Lは、   ログファイルを切り替えるやり直し

  やり直しlofilegアーカイブ

lは   、インスタンス・リカバリを実行します

  操作のREDOログファイル

リットル   ホットスタンバイ開始と終了

  物事をNOLOGGING DML操作

事がNOLOGGINGプロパティを設定されている場合は、次のアクションがイベントを待機する可能性が高くなります。

ダイレクト・ロード(SQL * Loaderの)

ダイレクト・ロードのINSERT

CREATE TABLEを... AS SELECT

CREATE INDEXを

TABLE ... MOVEパーティションをALTER

TABLE ... SPLIT PARTITIONをALTER

ALTER INDEX ... SPLIT PARTITION

INDEXをALTER ... REBUILD

INDEXをALTER ... REBUILD PARTITIONを

INSERT、UPDATE、およびラインの外に保存されたNOCACHE NOLOGGINGモードでのLOBのDelete

       查询该等待事件的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;

       原因分析及解决办法:郑州不孕不育医院:http://mobile.zzchxbyy.com/

如果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,其它会话如果也要更新控制文件的话,那么就要等待了。


おすすめ

転載: blog.51cto.com/14510269/2435792