1.查看是哪一个存储过程被锁住
查V$DB_OBJECT_CACHE视图
select * from V$DB_OBJECT_CACHE where owner='过程的所属用户' AND LOCKS!='0'
2.查看是哪一个sid,通过sid可以知道是哪一个session
查v$access视图
select * from v$access where owner='过程的所属用户' and name='刚才查到的过程名'
3.查出sid和serial#
查v$session视图
select sid,serial#,paddr from v$session where sid='刚才查到的sid';
查v$process视图
select spid from v$process where addr='刚才查到的paddr';
4.杀进程
4.1先杀oracle进程
alter system kill session '查出的sid,查出的serial#';
4.2再杀操作系统进程
如果是unix
kill -9 刚查出的spid
如果是windows
orakill 刚查出的sid 刚查出的spid
http://www.cnblogs.com/zwl715/p/3699124.html
原因:存储过程执行过程中,关闭或者中断存储过程,重新编译是等待时间很长,无法删除
解决:
先查出被锁定存储过程的spid
SELECTspid
FROMV$DB_OBJECT_CACHEOC,
V$OBJECT_DEPENDENCY OD,242);">DBA_KGLLOCKW,242);">V$SESSIONS,242);">V$PROCESSP
WHEREOD.TO_OWNER = OC.OWNER
ANDOD.TO_NAME = OC.NAME
ANDOD.TO_ADDRESS = W.KGLLKHDL
ANDW.KGLLKUSE = S.SADDR
ANDP.ADDR = S.PADDR
ANDOC.NAME ='SP_PS_DATAWWTPFLOWSUM_U'//存储过程名称
登陆被锁定存储过程所属Oracle的安装服务器,开始->运行->CMD,输入格式orakill SID实例SPID如:C:\>orakill orcl 540
http://www.cnblogs.com/zwl715/p/3699120.html