ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 等待事件--library cache pin

等待事件--library cache pin

原创 Linux操作系统 作者:linfeng_oracle 时间:2013-08-09 11:13:08 0 删除 编辑
等待事件--library cache pin
 
        这个等待事件和library cache lock 一样是发生在共享池中并发操作引起的事件。通常来讲,如果Oracle 要对一些PL/SQL 或者视图这样的对象做重新编译,需要将这些对象pin到共享池中。 如果此时这个对象被其他的用户特有,就会产生一个library cache pin的等待。
 
        这个等待事件包含四个参数:
P1--handle address: 被加载的对象的地址。
P2--pin address: 锁的地址。
P3--100*mode+namespace: 被加载对象的数据片段+被加载对象在v$db_object_cache 视图中namespace名称。
 
        P1,P2可与x$kglpn和x$kglob表相关:
X$KGLOB (Kernel Generic Library Cache Manager Object)
X$KGLPN (Kernel Generic Library Cache Manager Object Pins)

-- 查询X$KGLOB,可找到相关的object,其SQL语句如下
(即把V$SESSION_WAIT中的P1raw与X$KGLOB中的KGLHDADR相关连)
select kglnaown,kglnaobj from X$KGLOB
where KGLHDADR =(select p1raw from v$session_wait
where event='library cache pin');

-- 查出引起该等待事件的阻塞者的sid
select sid from x$kglpn , v$session
where KGLPNHDL in
(select p1raw from v$session_wait
where wait_time=0 and event like 'library cache pin%')
and KGLPNMOD <> 0
and v$session.saddr=x$kglpn.kglpnuse;

-- 查出阻塞者正执行的SQL语句
select sid,sql_text
from v$session, v$sqlarea
where v$session.sql_address=v$sqlarea.address
and sid=<上面查询的sid>;
这样,就可找到"library cache pin"等待的原因,从而解决由此引起的性能问题。
 

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

上一篇: rman(3)--恢复概述
下一篇: BBED--生成
请登录后发表评论 登录
全部评论

注册时间:2011-09-14

  • 博文量
    76
  • 访问量
    415094