存储过程执行后手工停止后,发现存储过程无法编译,报ora-04021错误。
1、查找正在执行的存储过程
select distinct s1.*,oc.* from V$DB_OBJECT_CACHE oc,
v$object_dependency od,
dba_kgllock w,
v$session s1
where oc.name = 'SP_KFMAINTAIN_DATA'
and od.TO_OWNER = oc.OWNER
and od.TO_NAME = oc.NAME
and od.TO_ADDRESS = w.kgllkhdl
and w.kgllkuse = s1.SADDR;
2、根据找到的sid,关联spid,在操作系统直接kill进程。后存储过程可以直接编译。