library cache —— library cache pin、library cache lock

关于library cache pin和library cache lock的定义如下:
(1)library cache lock:访问或修改库高速缓冲区的对象时,对库高速缓冲区句柄获得锁。在获得library cache lock的过程中,如果发生争用,则等待library cache lock事件。

SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name like 'library cache lock';

NAME			       PARAMETER1      PARAMETER2      PARAMETER3
------------------------------ --------------- --------------- -------------------------
library cache lock	       handle address  lock address    100*mode+namespace


(2)library cache pin:对库高速缓冲区对象访问或修改时,对library cache object(LCO)获得的锁。若library cache lock保护LCO详述,library cache pin则保护LCO内容。在获取library cache pin的过程中,若发生争用,则等待library cache pin事件。

SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name like 'library cache pin';

NAME			       PARAMETER1      PARAMETER2      PARAMETER3
------------------------------ --------------- --------------- -------------------------
library cache pin	       handle address  pin address     100*mode+namespace


为什么oracle对一个库高速缓冲区对象不用一个锁,而使用library cache lock和library cache pin这两个锁?library cache lock是对句柄获得的,而library cache pin是对LCO获得的。

整理library cache lock和library cache pin相关的性能问题结果如下:
(1)library cache lock和library cache pin等待引起的性能下降现象,大部分是因不适当的DDL(Create、alter、compile、flush、...)引发的。因此在事务繁忙的系统上执行DDL时,应该充分考虑以上内容后执行。偶尔在Hard Parsing频繁的系统上,为防止共享池内存的枯竭(为避免错误ORA-4031),有时会执行flush。但这时可能发生library cache pin等待引起的性能下降现象。而且,flush后sql语句的执行都伴随着Hard Parsing,因此可能引发性能问题。

(2)Hard Parsing频繁的系统上,也可能出现library cache pin等待。不仅是library cache pin,而且与library cache相关的等待大部分是因为过度的Hard Parsing引发的。最好的解决方法是恰当的使用Bind变量,也可以考虑Cursor Sharing等方法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值