如何检查oracle是否有死锁?

-死锁查询语句

选择bs.username“阻止用户”,bs.username“数据库用户”,

ws.username“等待用户”,bs。希德"希德",ws。希德SID,

bs.serial#“序列号”,bs.sql_address“地址”,

bs . Sql _ hash _ value“Sql hash”,bs.program“阻止App”,

ws.program“等待App”,bs.machine“堵机”,

ws.machine“等待机器”,bs.osuser“阻塞OS用户”,

ws.osuser "等待操作系统用户",bs.serial# "Serial# ",

ws.serial# "WSerial# ",

解码(wk。类型,

MR ','媒体恢复',

RT ','重做线程',

UN ','用户名',

'发送','交易',

' TM ',' DML ',

UL ',' PL/SQL用户锁',

' DX ','分布式事务',

CF ','控制文件',

是','实例状态',

FS ','文件集',

IR ','实例恢复',

ST ','磁盘空间事务',

TS ','临时段',

IV ','库缓存失效',

' LS ','日志开始或切换',

RW ','行等待',

SQ ','序列号',

' TE ','扩展表',

TT ','临时表',

wk。类型

)lock_type,

解码(hk.lmode,

0,'无',

1,'空',

2,' ROW-S (SS)',

3,“第X排(SX)”

4,'分享',

5,' S/ROW-X (SSX)',

6,'独家',

TO_CHAR (hk.lmode)

)mode _ held,

解码(wk.request,

0,'无',

1,'空',

2,' ROW-S (SS)',

3,“第X排(SX)”

4,'分享',

5,' S/ROW-X (SSX)',

6,'独家',

TO_CHAR(工作请求)

)模式_请求,

TO _ CHAR(hk . id 1)lock _ id 1,TO_CHAR (hk.id2) lock_id2,

(hk。块,

0,'未阻塞',/**//*未阻塞任何其他进程*/

1,'阻塞',/**//*此锁阻塞其他进程*/

2,'全局',/**//*这个锁是全局的,所以我们说不清*/

TO_CHAR (hk。块)

)屏蔽_其他

从v $锁定hk、v $会话bs、v $锁定wk、v $会话ws

香港在哪里?BLOCK = 1

还有hk.lmode!= 0

还有hk.lmode!= 1

还有wk.request!= 0

还有wk。键入(+) = hk。类型

以及wk.id1(+) = hk.id1

以及wk.id2(+) = hk.id2

还有香港。SID = bs。SID(+)

还有wk。SID = ws。SID(+)

和(bs.username不为空)

和(bs.username & lt& gt系统’)

和(bs.username & lt& gtSYS’)

按1排序;

查询死锁选择语句

select SQL _ text from v $ SQL where hash _ value in(

select SQL _ hash _ value from v$session where sid in(select session _ id from v$locked _ object)

)