oracle表被锁处理方法.c
    最近遇到这样一个问题,操作一个表,发现被人锁定了,于是查询谁锁定的表,发现多人锁定,安全起见,不能全部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掉就行了。 
alter system kill session '133,3506' ;