这个专题讲一些日常运维的异常处理
今天讲一个Package编译hang住的处理过程
开发人员反映编译一个package的时候hang住,无法编译成功
首先想到的是可能有该package被其他进程锁住了
这里我们使用v$access查询当前正在被访问的对象
注意:这个语句有时查询非常缓慢,甚至无法查出
select * from v$access where object ='HDB_JOB';
这时我们使用下面的方法
这里首先根据机器名或者用户名找出开发人员对应的会话
select * from v$session where terminal='ASEN-NB862' or sid=706;
这里记住SID
接下来我们查看v$session_wait 视图中该会话对应的等待事件
select * from v$session_Wait order by event desc
如果为library cache pin则说明有进程在运行这个package
这时可以参考如下链接解决
http://www.zhaibibei.cn/oralce/troubleshooting/library-cache-pin/
如果不是则说明可能是个bug,需要联系oracle support 或者重启数据库试试