存储过程不能编译(Library cache pin)问题的解决



Library cache pin解决方法


Oracle数据库中存储过程无法编译执行,编译存储过程时,发生“卡死”现象。


解决的思路是:首先找到哪个对象被锁;然后找到哪个session持有锁;最后终止该session。


1、找到一直处于等待状态的session


select * from v$session_wait where event like 'library%';


并记录下P1RAW字段(该会话等待的对象的handle的值)的值XXXXXXX。


2、找到持有锁的session


select a.sid, a.serial# from x$kglpn b, v$session a
where a.SADDR = b.kglpnuse and b.kglpnhdl = 'XXXXXXX' and b.kglpnmod <> 0;


并记录下SID以及SERIAL#字段的值,是该会话锁定了相关对象。


3、杀掉持有锁的session


alter system kill session 'sid, serial#';


如果不能杀则改杀操作系统进程:


select spid from v$session s, v$process p where s.paddr=p.addr and s.sid=XXXX;


# kill -9 spid


如果是windows操作系统,使用orakill:


orakill SID(instance_name) spid
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值