修改一张表时,会对修改的行加TM锁,同时对表加TM锁
v$lock
update t set id=2 where id=1;
完成
update t set id=3 where id=1;
被阻塞
SQL> select * from v$lock where type
in('TM','TX') order by 3,4;
ADDR KADDR SID TYPE ID1
ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------- ------ ----------
---------- ---------- ---------- ---------- ----------
2F9C3F90 2F9C3FA8 142 TM 51395
0 3 0 713 0
2FA0EE10 2FA0EF2C 142 TX 655369
216 6 0 713 1
2F9C403C 2F9C4054 146 TM 51395
0 3 0 698 0
30FB9C68 30FB9C7C 146 TX 655369
216 0 6 698 0
LMODE-拥有的锁
BLOCK-阻塞别的回话 就是以完成那个
REQUEST-请求的锁 就是被阻塞那个
SQL> select SID,EVENT from v$session_wait;
SID EVENT
---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------
142 SQL*Net message to client
146 enq: TX - row lock contention