今天跑了一段存储,遇到一个问题,第一次遇到,执行了下面的SQL:
BEGIN
P_C12_SCJJDXSC_WZMT;
END;
然后发现一直在execute,等了好长时间也没有stop,老员工说存储一直在执行,可能死循环,需要kill procedure.然后我查询了一下,最后发现下面这个方法好使:
第一步:
select *
from v$db_object_cache
where locks > 0 and pins > 0 and type='PROCEDURE';
第二步:
SELECT t.* FROM V$ACCESS t WHERE t.object='P_C12_SCJJDXSC_JLDMY';
t.object传你被锁住的procedure的名字,
第三步:
SELECT SID,SERIAL# FROM V$SESSION WHERE SID='15' OR sid='20'; -
第四步:
alter system kill session '20,2155';
以上就是如何来解锁被锁住的procedure。如有更好的办法,还请各位大神分享。