10.3.6.2.4 TX enqueue:
那些是排他的当一个事务开始它的第一次改变持有知道COMMIT或者ROLLBACK:
Waits for TX in mode 6:
发生当一个session 是等待一个row level lock 被其他session持有。
这个发生在一个yoghurt是更新或者删除一个记录, 另外一个session需要来更新或者删除。
这类TX enqueue 等待对应于 wait event enq: TX - row lock contention.
解决方案是第一个持有lock的session执行一个COMMIT或者ROLLBACK
SESSION 1:
SQL> select * from v$mystat where rownum<2;
SID STATISTIC# VALUE
---------- ---------- ----------
1178 0 0
SQL> update test set id=200 where id=2;
已更新 1 行。
SESSION 2:
SQL> select * from v$mystat where rownum<2;
SID STATISTIC# VALUE
---------- ---------- ----------
584 0 0
SQL>
SQL> update test set id=300 where id=2; --hang
SQL> select * from v$lock a where sid in (1178,584) and type in ('TM','TX');
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------------- ---
enq: TX - row lock contention 行锁
最新推荐文章于 2024-01-24 14:54:31 发布