如何查询oracle的死锁?

2024-12-27 18:02:12
推荐回答(2个)
回答1:

下面查询可以查到死锁,但是注意其实查询到的不是真正的死锁,查询到的只是是死锁发生前的等待条件,真正的死锁在10G中会被系统所阻止掉
select t2.username||' '||t2.sid||' '||t2.serial#||' '||t2.logon_time||' '||t3.sql_text
from v$locked_object t1,v$session t2,v$sqltext t3
where t1.session_id=t2.sid
and t2.sql_address=t3.address
order by t2.logon_time ;
此外,从V$LOCK的BLOCK字段可以看到,BLOCK>0表示有等待发生了,注意是行级等待,而在表级没有死锁或等待
select * from v$lock where block>0 ;

回答2:

查找死锁表及对应的Session

select a.object_name, b.*
from all_objects a,
v$locked_object b
where a.object_id=b.object_id