日期:2014-05-16 浏览次数:20615 次
[转]等待事件---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,把高速缓存中的数据全部写入到磁盘,这个等待时间就会消失。