加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 14:00:10 所属栏目:百科 来源:网络整理
导读: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='过程的所

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读