oracle em账号密码oracle表被锁处理方法

oracle表被锁处理方法

 

最近遇到这样一个问题,操作一个表,发现被人锁定了,于是查询谁锁定的表,

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

  www.2cto.com  

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 

  www.2cto.com  

// 查询到的结果如下 

 

如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待 

以上的语句可以查询到谁锁了表,而谁在等待。 

 

以上查询结果是一个树状结构,如果有子节点,则表示有等待发生。 

如果想知道锁用了哪个回滚段,还可以关联到V$rollname,其中xidusn就是回滚段的USN 

 

找出谁锁定的记录,kill掉就行了。 

alter system kill session '133,3506' ;&nboracle账号sp;

 

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。