oracle查询、Kill锁资源的SQL语句

有时候在对oracle中的表进行DML操作的时候,会出现类似资源正在被使用的提示,如果资源正在被使用,就可能会导致该资源被oracle给锁住,导致别的session无法进行操作。这个时候,我们可以通过查找到对该资源进行锁定的session,然后kill掉该session。在查锁的时候,主要用到的表或视图主要有v$locked_object、all_objects、v$session等。

-- 查看锁表进程SQL语句1:
SELECT b.session_id,
       b.oracle_username,
       b.os_user_name,
       b.process,
       b.locked_mode,
       a.owner,
       a.object_name,
       a.object_id,
       a.object_type,
       b.xidusn,
       b.xidslot,
       b.xidsqn
  FROM all_objects a, v$locked_object b
 WHERE a.object_id = b.object_id;
-- 查看锁表进程SQL语句2:
SELECT *
  FROM v$locked_object v, all_objects ao
 WHERE v.object_id = ao.object_id;
-- 杀掉锁表进程
-- 如有记录则表示lock,记录下SID和serial#,将记录下的SID和serial#替换下面的738,1429,即可接触lock。
ALTER SYSTEM KILL SESSION '738,1429';

上面的SQL代码只是用作参考,记住主要操作v$locked_object、all_objects、v$session这几个对象就OK了,kill语句记不住也没关系,可以使用PL/SQL Developer工具来kill。

本文标题:oracle查询、Kill锁资源的SQL语句

本文链接:http://yedward.net/?id=133

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章