存储过程编译时卡死


存储过程编译时卡死
参考:http://blog.itpub.net/26015009/viewspace-773435/

存储过程编译没完成,或者编译失败时,oracle 数据库会自动把相应的存储过程锁起来,最无赖的做法是重启数据库,或找到相关会话,杀掉;

一 , 找到之前调试的存储过程 名称,使用一下语句找到 sid

select a.sid,a.OBJECT from v$access a where object like '%存储过程名%'      

可辅助查V$DB_OBJECT_CACHE确认
SELECT * FROM V$DB_OBJECT_CACHE WHERE name='存储过程名';
v$access显示目前库缓存对象被锁定的信息,这个被强加的锁用来确保库缓存对象在sql执行请求它时不会被老化

二 、拿到sid之后,去 v$session视图 去查询 sid,serial#
   SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID= 140

三、拿到 sid,serial# 之后就简单了,直接杀死 session,存储过程就可以重新编译了
   alter system kill session '140,10555' immediate;
   
如数据库中杀了没反应,需要在操作系统上杀该会话;   
select a.SID,a.SERIAL#,b.SPID,a.STATUS from v$session a,v$process b where a.SID=6566 and a.PADDR=b.ADDR;    
SID    SERIAL#    SPID                     STATUS
---------- ---------- ------------------------ --------      
6566         27 23462626                 KILLED
就要在操作系统层来kill
#kill -9 23462626
  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29519108/viewspace-1817693/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29519108/viewspace-1817693/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值