|
有时候在对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。
|
|