彻底搞清楚library cache lock的成因和解决方法

时间:2013-06-07 16:51:25
【文件属性】:
文件名称:彻底搞清楚library cache lock的成因和解决方法
文件大小:54KB
文件格式:TXT
更新时间:2013-06-07 16:51:25
oracle library cache lock 当我们在执行一些DML,DDL,甚至desc tablename等等操作的时候,会话就hang住了, 还有一种情况,当我们使用create or replace procedure/function等语句修改Procedure和Function的时候,会话也会hang住,这是为什么呢? 当出现上述情况的时候,我们可以通过v$session_wait查询等待事件,当然,这种情况下,该session的等待事件一定是'Library cache lock'。 让我们来解释一下, 第一种情况,当会话1(session 1)在对一个表执行DML 或者 DDL,与此同时还有另一个会话,我们姑且称之为会话2(session 2),这个会话2也在对这个表执行DDL(如ALTER TABLE),当会话2的完成需要很长时间时(依操作的具体的数据量而定),会话1就会hang住,这时,你查询会话1的等待事件就是'Library cache lock'。 第二种情况,当会话1(session 1)在修改一个package,与此同时还有另一个会话,我们姑且称之为会话2(session 2),这个会话2正在执行会话1所修改的package中的Procedure或者Function,会话1就会hang住,这时,你查询会话1的等待事件就是'Library cache lock'。 因此,在对Package/Procedure/Function/View进行编译和分析的时候,我们必须确定此时没有人正在编译和分析相同的对象,即确保没有人也在此时改变这些需要重定义(drop和recreate)的对象的定义。

网友评论

  • 写的有点乱,没有从中找到我要的东西