重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3002|回复: 2
打印 上一主题 下一主题

[Oracle] 如何处理编译存储过程卡死的问题

[复制链接]
跳转到指定楼层
楼主
发表于 2021-1-6 11:01:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
存储过程编译时会卡死  

在对存储过程进行test的时候,没有完全停止,就又在另外一个窗口,对它进行修改而且进行编译,出现了卡死现象。
用PLSQL Developer 在session里,找到这条session的记录,然后kill后,再重新编译这个过程,还是卡死,
可是在session里这条记录已经是显示killed状态,那就通过下面的方法进行解决:

1:查V$DB_OBJECT_CACHE


SELECT * FROM V$DB_OBJECT_CACHE WHERE name='PRC_WORKLOAD_BLKSHOURU' AND LOCKS!='0';

注意:PRC_WORKLOAD_BLKSHOURU为存储过程的名称。

发现locks=2,

2:按对象查出sid的值

select SID from V$ACCESS WHERE object='PRC_WORKLOAD_BLKSHOURU';

注意:PRC_WORKLOAD_BLKSHOURU为存储过程的名称。

3:查sid,serial#

SELECT SID,SERIAL#,'alter system kill session ''' || sid || ',' || serial# || ''' immediate;'  FROM V$SESSION WHERE SID='刚才查到的SID';

执行杀会话的语句后,问题解决。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

沙发
发表于 2021-1-7 14:47:44 | 只看该作者
老师好,想问一下导致编译挂起的一般原因有哪些呢?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2021-1-9 16:26:28 | 只看该作者
同时编译,没有结束,以及过程中用到得对象在进行DDL可能会导致编译挂起。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-29 07:25 , Processed in 0.079986 second(s), 19 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表