一、逐条
--锁表
(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;