Oracle等待事件之enq: TM – contention
执行DML期间,为防止对与DML相关的对象进行修改,执行DML的进程必须对该表获得TM锁。
P1 = name|mode
P2 = object #
P3 = table/partition
SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name like 'enq: TM - contention';
NAME PARAMETER1 PARAMETER2 PARAMETER3
------------------------------ -------------------- -------------------- --------------------
enq: TM - contention name|mode object # table/partition
解决办法:可以通过下面的sql查询blocker
SELECT distinct w.tm, w.p2 OBJECT_ID, l.inst_id, l.sid, l.lmode, l.request,l.block
FROM
( SELECT p2, p3, 'TM-'||substr(p2raw,-8)||'-'||lpad(p3,8,'0') TM
FROM v$session_wait
WHERE event='enq: TM - contention'
and state='WAITING'
) W,
gv$lock L
WHERE l.type(+)='TM'
and l.id1(+)=w.p2
and l.id2(+)=w.p3
ORDER BY tm, lmode desc, request desc
;
一般发生TM争用的情况如下:
l DDL动作
l Lock table tab_name in share mode;lock table tab_name in exclusive mode;
l INSERT /*+ APPEND */ INTO
l SQL*Loader的direct path load
l 外键约束无索引
模拟enq: TM – contention会话1:
SYS@cdbtest1(CDB$ROOT)> lock table t in exclusive mode;
Table(s) Locked.
会话2:
SYS@cdbtest1(CDB$ROOT)> update t set object_id=100 where object_id=100;
查询等待事件
SYS@cdbtest1(CDB$ROOT)> select inst_id, event#, event,count(*) from gv$session
2 where wait_class# <> 6
3 group by inst_id, event#,event
4 order by 1,4 desc;
INST_ID EVENT# EVENT COUNT(*)
---------- ---------- ------------------------------ ----------
1 278 enq: TM - contention 1
1 414 SQL*Net message to client 1
查询blocker
SELECT distinct w.tm, w.p2 OBJECT_ID, l.inst_id, l.sid, l.lmode, l.request,l.blocklmode, l.request,l.block
FROM
2 3 ( SELECT p2, p3, 'TM-'||substr(p2raw,-8)||'-'||lpad(p3,8,'0') TM
4 FROM v$session_wait
5 WHERE event='enq: TM - contention'
6 and state='WAITING'
7 ) W,
8 gv$lock L
9 WHERE l.type(+)='TM'
10 and l.id1(+)=w.p2
11 and l.id2(+)=w.p3
12 ORDER BY tm, lmode desc, request desc
13 ;
TM OBJECT_ID INST_ID SID LMODE REQUEST BLOCK
-------------------- ---------- ---------- ---------- ---------- ---------- ----------
TM-00013866-00000000 79974 1 113 6 0 1
TM-00013866-00000000 79974 1 91 0 3 0
阻塞者是113,被阻塞者是91.
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。