如何检测被锁住的Oracle存储过程

时间:2021-12-20 04:45:41

今天遇到了这个情况,然后在网上找了到了这篇文章,借鉴过来做参考吧!

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