Oracle锁表查杀会话进程

一、逐条
--锁表

(1)查表名 和 sessionid
select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id;

(2)sessionid(sid) 、serial#

select b.username,b.sid,b.serial#,logon_time
from v$locked_object a,v$session b
where a.session_id = b.sid order by b.logon_time;
(3)查杀会话
alter system kill session'5,19141';  -- 两个数字 表示  sid serial#

集合成一条语句

SELECT 'alter system kill session '''||SID || ',' || SERIAL#||''';'
FROM V$SESSION
WHERE SID in
(SELECT SESSION_ID
FROM V$LOCKED_OBJECT, USER_OBJECTS
WHERE V$LOCKED_OBJECT.OBJECT_ID = USER_OBJECTS.OBJECT_ID);

alter system kill session '12,11697';

二、批量

 1 declare cursor mycur is
 2 select b.sid,b.serial#
 3   from v$locked_object a,v$session b
 4   where a.session_id = b.sid group by b.sid,b.serial#;
 5  
 6  
 7 begin
 8   for cur in mycur
 9     loop  
10      execute immediate ( 'alter system  kill session  '''||cur.sid || ','|| cur.SERIAL# ||''' ');
11      end loop;
12  
13 end;
美好生活
原文地址:https://www.cnblogs.com/ssbydk/p/9700318.html