日期:2014-05-16  浏览次数:20619 次

在网上找的enq: TX - row lock contention等待事件总结

[转]等待事件---enq:TX - row lock contention
enq是一种保护共享资源的锁定机制,一个排队机制,先进先出(FIFO)

发生TX锁的原因一般有几个

1.不同的session更新或删除同一个记录。

2.唯一索引有重复索引

3.位图索引多次更新

4.同时对同一个数据块更新

5.等待索引块分裂

通过数据系统视图检查果然是多个update的sql

select sid,username,event from v$session where stat in('WAITING') and wit_class!='Idle';

sid从上面的sql获得

select sid,sql_text from v$session a,v$sql b where sid in(282,496) and (b.sql_id=a.sql_id or b.sql_id=a.prev_sql_id);

?

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/aicon/archive/2010/04/14/5487094.aspx

这个等待事件跟ckpt进程有关,这应该是oracle 的增量检查点在作怪,由于数据库中有大量大的事务,本来数据库应该在switch logfile的事后checkpoint,但是由于增量checkpoint的原因数据库一直没有完全刷新log buffer,造成log buffer满。此时如果手动checkpoint,把高速缓存中的数据全部写入到磁盘,这个等待时间就会消失。