ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-04201及library cache pin、library cache lock

ORA-04201及library cache pin、library cache lock

原创 Linux操作系统 作者:wonga 时间:2011-09-02 16:53:26 0 删除 编辑
问题: awr报告 top5出现library cache pin、library cache lock

           告警日志中出现:ORA-04021timeout occurred while waiting to lock object

当对一个对象进行编译时,在library cache中先lock该对象,后pin该对象。如果存在library cache lock等待,则一定存在library cache pin等待;反过来,如果存在library cachepin等待,不一定会存在library cache lock等待;

    可能发生library cache pin和library cache lock的情况:
1、在存储过程或者函数正在运行时被编译。
2、在存储过程或者函数正在运行时被对它们进行授权、或者移除权限等操作。
3、对某个表执行DDL期间,有另外的会话对该表执行DML或者DDL。
4、PL/SQL对象之间存在复杂的依赖性

5. 其他成因:a DML operation that is hanging because the table which is accessed is currently  undergoing changes (ALTER TABLE). This may take quite a long time depending on the size of the table and the type of the modification  (e.g. ALTER TABLE x MODIFY (col1 CHAR(200) on thousands of records).  

  解决方法:

用如下sql脚本查找造成死锁的session
SELECT sid, DECODE( block, 0, 'NO', 'YES' ) BLOCKER,
DECODE( request, 0, 'NO', 'YES' ) WAITER, id1, id2, lmode /* 6 is exclusive lock. For others, refer to SV10 */
FROM v$lock  WHERE request > 0 OR block > 0 ORDER BY block DESC
/

用如下sql脚本查找该session锁定的对象

SELECT b.object_name,decode( a.locked_mode,0, 'None', /* Mon Lock equivalent */

1, 'Null', /* N */
2, 'Row-S (SS)', /* L */
3, 'Row-X (SX)', /* R */
4, 'Share', /* S */
5, 'S/Row-X (SSX)', /* C */
6, 'Exclusive',
a.locked_mode) Locked_Mode, /* X */
session_id, oracle_username, os_user_name, process
FROM v$LOCKED_OBJECT a, ALL_OBJECTS b
WHERE a.object_id = b.object_id
and a.locked_mode in (3, 5, 6)
and a.session_id=&sid;

解决办法:找出这个session,然后 kill
alter system kill session 'sid,serial#';

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

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2011-09-02

  • 博文量
    1
  • 访问量
    1429