`

oracle 查看锁 与 解锁

阅读更多
--------------解锁
alter system kill session 'sid,serial';
--------------查询锁表用户
select  
   sess.sid,  
   sess.serial#,  
   lo.oracle_username,  
   lo.os_user_name,  
   ao.object_name,  
   lo.locked_mode
from  
   v$locked_object lo,  
   dba_objects     ao,  
   v$session       sess  
where  
   ao.object_id = lo.object_id  
and  
   lo.session_id = sess.sid;

--是查询谁锁定的表,发现多锁定,安全起见,不能全部kill,于是用一下语句判定,谁锁定,谁等待。

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 
ORDER BY o.object_id,xidusn DESC

--如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待 
--以上的语句可以查询到谁锁了表,而谁在等待。
--以上查询结果是一个树状结构,如果有子节点,则表示有等待发生。
--如果想知道锁用了哪个回滚段,还可以关联到V$rollname,其中xidusn就是回滚段USN
--找出谁锁定的记录,kill掉就行了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics