查询表的锁

来源:互联网 发布:java短信验证码通道 编辑:程序博客网 时间:2024/06/05 18:49

1.使用表名,在v$locked_object l,dba_objects o,v$session s级联查询该表是否锁住了。

SELECT /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name,

o.owner,o.object_name,o.object_type,s.sid,s.serial#
FROM v$locked_object l,dba_objects o,v$session s
WHERE l.object_id=o.object_id
AND l.session_id=s.sid
AND o.OBJECT_NAME LIKE UPPER('ti_order_fee_load_511')     ---要查询的表名

ORDER BY o.object_id,xidusn DESC

2.如果查出结果,那表名该表被锁住了。

alter system kill session '1025,12435' ; --即为上面查出的SID,SERIAL#字段。

即可杀掉锁住该表的进程。

3.杀掉并不表示改锁已解除。oracle会对原有进程的操作进行rollback。

SELECT a.used_ublk
FROM v$transaction a, v$session b     
WHERE a.addr = b.taddr AND b.sid = 1077  ;   ---即为上面查出来的SID字段。

如果查出为0或者无记录,则表示回滚完。否则直到为0表示回滚完。


原创粉丝点击