如何检测被锁住的Oracle存储过程及处理办法汇总(转)

前端之家收集整理的这篇文章主要介绍了如何检测被锁住的Oracle存储过程及处理办法汇总(转)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

猜你在找的Oracle相关文章