风哥教程

培训 . 交流 . 分享
Make progress together!

定位Library Cache pin,Library Cache lock等待的解决方法

[复制链接]
内容发布:paulyi| 发布时间:2014-2-9 10:06:52
定位Library Cache pin,Library Cache lock等待的解决方法

这个星期一我去客户巡检时,客户告知我们派综系统数据库在前面几个月
   日志中有时会出现很多Waited too long for library cache load lock错误
  因为当时不在现场,所以无法确定是由什么引起的。
  可以建议客户在出现此类情况时,用以下sql进行监控,捕获相关信息进行分析:
    这三个sql已经经过测试,没有问题。
  
1.获得Library Cache pin,Library Cache lock等待的对象,其中kglnaobj是object_name

spool object_name.log
SELECT addr, kglhdadr, kglhdpar, kglnaown, kglnaobj, kglnahsh, kglhdobj
  FROM x$kglob
WHERE kglhdadr IN (SELECT p1raw
                      FROM v$session_wait
                     WHERE event LIKE 'library%')
spool off;   

2.获得持有等待对象的session信息

spool session.log
SELECT a.SID, a.username, a.program, b.addr, b.kglpnadr, b.kglpnuse,
       b.kglpnses, b.kglpnhdl, b.kglpnlck, b.kglpnmod, b.kglpnreq
  FROM v$session a, x$kglpn b
WHERE a.saddr = b.kglpnuse
   AND b.kglpnmod <> 0
   AND b.kglpnhdl IN (SELECT p1raw
                        FROM v$session_wait
                       WHERE event LIKE 'library%')
spool off;      

3.获得持有对象用户执行的代码

spool sql_code.log
SELECT sql_text
  FROM v$sqlarea
WHERE (v$sqlarea.address, v$sqlarea.hash_value) IN (
          SELECT sql_address, sql_hash_value
            FROM v$session
           WHERE SID IN (
                    SELECT SID
                      FROM v$session a, x$kglpn b
                     WHERE a.saddr = b.kglpnuse
                       AND b.kglpnmod <> 0
                       AND b.kglpnhdl IN (SELECT p1raw
                                            FROM v$session_wait
                                           WHERE event LIKE 'library%')))
spool off;      


上一篇:IBM小型机上AIX 5L的安装
下一篇:oracle exp逻辑导出到4G时提示终止写入DMP文件
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门文章教程

  • PostgreSQL数据库中文培训手册
  • Oracle OCP认证考试IZ0-053题库共712题数据
  • Navicat for MySQL最新版下载地址及注册码
  • MySQL5权威指南(第3版)PDF电子版下载
  • Oracle Database 12c 数据库100个新特性与
  • oracle 12c RAC 日志频繁切换 checkpoint n
快速回复 返回顶部 返回列表