今日学习Oracle心得体会

/*************breakable parse locks易碎的解析锁*******************/ 
1,parse lock由模式对象引用的 sql或plsql语句或代码块持有
2,持有此锁的目的,如果sql或plsql引用的对象被drop or alter,以便相关的shared sql area变更为invalidate无效
  (也就是说只有有了这个锁,共享池中shared sql area的sql or plsql一旦引用对象变化了,其share sql area才可以变为无效)
3,此锁不允许任何ddl操作

4,此锁产生于share pool共享池
5,解析sql会获取此锁(解析sql要查看sql所引用对象是否发生过变化,从而决定shared pool中的share sql area是否有否,否则变更为无效;这个期间要获取此锁)                
6,只要针对sql的share sql area在共享池,就要持此锁,注意是针对sql的share sql area,二者不一回事

 

 v$librarycache视图

    scott@ORCL > desc v$librarycache;
     Name                          Null?    Type
     ----------------------------- ----------------------
     NAMESPACE                              VARCHAR2(15)  --存储在库缓存中的对象类型,值为SQLarea,table/procedure,body,trigger
     GETS                                   NUMBER   --显示请求库缓存中的条目的次数(或语句句柄数)
     GETHITS                                NUMBER   --显示被请求的条目存在于缓存中的次数(获得的句柄数)
     GETHITRATIO                            NUMBER   --前两者之比
     PINS                                   NUMBER   --位于execution阶段,显示库缓存中条目被执行的次数
     PINHITS                                NUMBER   --位于execution阶段,显示条目已经在库缓存中之后被执行的次数
     PINHITRATIO                            NUMBER   --前两者之比
     RELOADS                                NUMBER   --显示条目因过时或无效时在库缓存中被重载的次数
     INVALIDATIONS                          NUMBER   --由于对象被修改导致所有参照该对象的执行计划无效的次数,需要被再次解析
     DLM_LOCK_REQUESTS                      NUMBER
     DLM_PIN_REQUESTS                       NUMBER
     DLM_PIN_RELEASES                       NUMBER
     DLM_INVALIDATION_REQUESTS              NUMBER
     DLM_INVALIDATIONS                      NUMBER
    get表示请求条目或对象、获得对象句柄;
    pin根据句柄找到实际对象并执行,但对象内容可能因为老化而pin不到所以出现reload;
    一个session需要使用一个object时,如果是初次使用,则必然是先get然后pin并维护这个object的句柄。下次再使用这个object时,因为
    已经维护该句柄,所以直接pin而没有了get过程。如果对象老化则移除共享池,再次请求则会出现reload。  www.2cto.com 
    由上面所列出的字段可知,v$librarycache视图可以用来监控librarycache的活动情况。
    重点关注字段
        RELOADS列:表示对象被重新加载的次数,理论上该值应该接近于零。过大是由于对象无效或librarypool过小被换出。
        INVALIDATIONS:列表示对象失效的次数,对象失效后,需要被再次解析。
        GETHITRATIO:该列值过低,表明过多的对象被换出内存。
        GETPINRATIO:该列值过低,表明会话没有多次执行相同的游标,即使对象被不同的会话共享或会话没有找到共享的游标。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值