一个客户的小系统,程序部署大概是08年左右,9I的库,感觉可能是当初设计的程序和oracle9I对死锁的处理方面都有一些问题,没法改变业务需求,这么老的程序跑到现在真不容易,应急的思路给写了这个语句。
declare
v_sid v$session.sid%type;
v_serial# v$session.serial#%type;
cursor cur_session is SELECT p.spid, a.serial# FROM v$process p, v$session a, v$locked_object b, all_objects c WHERE p.addr = a.paddr AND a.process = b.process AND c.object_id = b.object_id;
begin
open cur_session;
loop
fetch cur_session into v_sid,v_serial#;
execute immediate 'alter system kill session '||chr(39)||v_sid||','||v_serial#||chr(39);
exit when cur_session%notfound;
end loop;
close cur_session;
end;