这个专题讲一些日常运维的异常处理 今天讲一个Package编译hang住的处理过程 ------- ##1. 现象 开发人员反映编译一个package的时候hang住,无法编译成功 首先想到的是可能有该package被其他进程锁住了 ------ ##2. 原因查找 ###2.1 查找对象访问情况 这里我们使用v$access查询当前正在被访问的对象 注意:这个语句有时查询非常缓慢,甚至无法查出 ``` select * from v$access where object ='HDB_JOB'; ``` 这时我们使用下面的方法 ### 2.2 查找会话的等待事件 这里首先根据机器名或者用户名找出开发人员对应的会话 ``` 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/](http://www.zhaibibei.cn/oralce/troubleshooting/library-cache-pin/) 如果不是则说明可能是个bug,需要联系oracle support 或者重启数据库试试