度量快速开发平台-专业、快速的软件定制快开平台

标题: oracle查询、Kill锁资源的SQL语句 [打印本页]

作者: 万望    时间: 2020-4-2 21:25
标题: oracle查询、Kill锁资源的SQL语句
有时候在对oracle中的表进行DML操作的时候,会出现类似资源正在被使用的提示,如果资源正在被使用,就可能会导致该资源被oracle给锁住,导致别的session无法进行操作。这个时候,我们可以通过查找到对该资源进行锁定的session,然后kill掉该session。在查锁的时候,主要用到的表或视图主要有v$locked_object、all_objects、v$session等。
  1. -- 查看锁表进程SQL语句1:
  2. SELECT b.session_id,
  3.        b.oracle_username,
  4.        b.os_user_name,
  5.        b.process,
  6.        b.locked_mode,
  7.        a.owner,
  8.        a.object_name,
  9.        a.object_id,
  10.        a.object_type,
  11.        b.xidusn,
  12.        b.xidslot,
  13.        b.xidsqn
  14.   FROM all_objects a, v$locked_object b
  15. WHERE a.object_id = b.object_id;
  16. -- 查看锁表进程SQL语句2:
  17. SELECT *
  18.   FROM v$locked_object v, all_objects ao
  19. WHERE v.object_id = ao.object_id;
  20. -- 杀掉锁表进程
  21. -- 如有记录则表示lock,记录下SID和serial#,将记录下的SID和serial#替换下面的738,1429,即可接触lock。
  22. ALTER SYSTEM KILL SESSION '738,1429';
复制代码
上面的SQL代码只是用作参考,记住主要操作v$locked_object、all_objects、v$session这几个对象就OK了,kill语句记不住也没关系,可以使用PL/SQL Developer工具来kill。

作者: 陈晓龙    时间: 2020-4-3 20:21

作者: 陈晓龙    时间: 2020-4-3 20:22





欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://plat.delit.cn/) Powered by Discuz! X3.2