DROP TEMP TS遭遇enq: TS - contention
作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
链接:http://www.dbaroad.me/archives/2009/07/drop_temp_wait_enq_ts.html
链接:http://www.dbaroad.me/archives/2009/07/drop_temp_wait_enq_ts.html
在DROP TEMP表空间时,会话长时间不能结束,查看等待事件为:
enq: TS - contention SQL> select name, parameter1, parameter2, parameter3,wait_class 2 from v$event_name 3 where name ='enq: TS - contention'; NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS -------------------- ------------ --------------- ----------- ---------- enq: TS - contention name|mode tablespace ID dba Other |
找出持有该表空间锁的会话,发现是smon进程,等待事件是smon timer,是个空闲等待事件:
SQL> r 1 SELECT DECODE (request, 0, 'Holder: ', 'Waiter: ') status, SID, 2 inst_id,ctime, id1, id2, lmode, request, TYPE 3 FROM gv$lock 4 WHERE (id1, id2, TYPE) IN (SELECT id1, id2, TYPE 5 FROM gv$lock 6 WHERE request > 0) 7* ORDER BY id1, request STATUS SID INST_ID CTIME ID1 ID2 LMODE REQUEST TY -------- ------ ------- -------- ------ ------ ------- ---------- -- Holder: 1099 1 1843932 3 1 3 0 TS Waiter: 859 1 151 3 1 0 6 TS SQL> select sid,username,type,PROCESS,PROGRAM,EVENT 2 from v$session where sid=1099; SID USERNAME TYPE PROCESS PROGRAM EVENT ---------- ---------- ---------- ------------ --------------- ----------- 1099 BACKGROUND 2494 oracle@jhsit01 smon timer SQL> select name, parameter1, parameter2, parameter3,wait_class 2 from v$event_name 3 where name = 'smon timer'; NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS ----------------- ------------- ------------ ----------- ---------- smon timer sleep time failed Idle |
估计是SMON进程正在回收、清理TEMP表空间之类的操作。当时直接了重启数据库,事后想想,还有以下两步可以尝试:
1、查看TEMP表空间的使用情况,找出使用TEMP表空间会话,看看是否可以杀掉:
select TABLESPACE_NAME, TOTAL_EXTENTS, USED_EXTENTS, FREE_EXTENTS from v$sort_segment; SELECT se.username username, se.SID sid, se.serial# serial#, se.status status, se.sql_hash_value, se.prev_hash_value, se.machine machine, su.TABLESPACE tablespace, su.segtype, su.CONTENTS CONTENTS FROM v$session se, v$sort_usage su WHERE se.saddr=su.session_addr; |
2、设置DROP_SEGMENTS事件,手工清理TEMP表空间:
alter session set events 'immediate trace name DROP_SEGMENTS level TS#+1'; |
— The End —
关键字: 故障案例


站内搜索