latch:library cache --desc v$librarycache;

latch:library cache用于保护hash bucket.
library cache lock保护HANDLE。
library cache pin保护library cache object--LCO.
从10G开始,library cache lock和library cache pin被MUTEX部分取代。暂时不讨论MUTEX。
latch:library cache的数量:
SYS@ bys3>select name from v$latch_children where name like '%librarycache%';
隐含参数:_kgl_bucket_count,默认值大于等于系统中CPU个数的最小素数-不超过67。查询时会显示为0--BUG。
一个latch:library cache管理着多个librarycache buckets.

latch:library cache多是因为局部latch:library cache访问比较频繁,增大其数量并不能解决。
如果shared pool过小,也会引发librarycache latch竞争,进而引起shared pool latch竞争---参考AWR--Shared Pool Advisory
具有高version_count的SQL也容易导致latch:library cache,因为在搜索到子LCO前会一直持有latch:library cache。
#########

library cache lock保护HANDLE--父游标和子游标的handle

在硬解析时,需要以独占模式(EXCLUSIVE)持有librarycache lock和library cache pin。
进程访问LCO,首先需要在latch:librarycache的保护下获得library cache lock,才能访问和修改HANDLE;然后获取library cache pin,才能访问和LCO。
子游标的HANDLE和LCO的访问和上面一样。

MODE有三类: null 1;shared 2;exclusive 3;  

null 1;空锁:空锁和独占锁互相不阻塞,主要起“标记”目的。标记对象正在使用中,或者标记对象以后还会用。保证对象内存不会被覆盖或释放。--可以执行三次,查看
select kglhdadr,kglhdpar,kglhdlmd,kglobhs0,kglobhd0,kglobhd6 from x$kglob wherekglnaobj like 'select * from aaa';
查看游标是否关闭。执行不大于3次,不会缓存,如有其它语句,则将未缓存的清空。
select * from bys.dept 执行三次,
SYS@ bys3>select kglhdadr,kglhdpar,kglhdlmd,kglhdpmd,kglobhs0,kglobhd0,kglobhd6from x$kglob where kglnaobj like 'select * from bys.dept';
KGLHDADR KGLHDPAR   KGLHDLMD   KGLHDPMD  KGLOBHS0 KGLOBHD0 KGLOBHD6
-------- -------- ---------- ---------- ---------- -------- --------
2499B1C0 24965DB4          1         0       4372 246C5CE0 252F0DD0  ----被缓存的子游标,
24965DB4 24965DB4         1         0       4500 23CC848C 00
被缓存的游标:当内存不足时,子游标堆6可以被覆盖,其它HADNLE等不可被覆盖。--原因是:重建执行计划的信息--父堆0,子堆0等都有可以快速重建执行计划-也算硬解析,但是消耗资源比正常硬解析少。

等待事件的P1 P2 P3分别是:

P1=HANDLE ADDRESS
P2=LOCK/PIN ADDRESS
PS=MODE*100+NAMESPACE
NAMESPACE分以下类型:
1.SQL AREA
2.TABLE/PROCEDURE/FUNCTION/PACKAGE HEADER
3.PACKAGE BADY
4.TRIGGER
5.INDEX
6.CLUSETER
7.PIPE
13.JAVA SOURCE
14.JAVE RESOURCE
32.JAVA DATA

常见的library cache lock持有模式的情况:

以独占持有的语句是:
ALTER TABLE……,
CREATE OR REPLACE PROCEDURE;
共享模式持有:SQL解析阶段
在SQL执行阶段,由共享模式转换为NULL。
定位引起library cache lock等待事件的语句:
select b.sid from x$kgllk a,v$session b where a.kgllkhdl in (select p1raw fromv$session_wait where wait_time=0 and event='library cache lock') and a.kgllkmod<>0and b.saddr=a.kgllkuse;

常见的library cache pin持有模式的情况:

以独占模式持有的是:
ALTER PROCEDURE ..COMPLE;
硬解析产生执行计划过程中需要
以共享模式持有的是:SQL执行阶段、PROCEDURE执行阶段。
定位引起library cache pin等待事件的会话:
select a.sid from x$kglpn b,v$session a where b.kglpnhdl in (select c.p1rawfrom v$session_wait c where c.wait_time=0 and c.event like 'library cachepin%') and b.kglpnmod<>0 and a.saddr=b.kglpnuse;

zhuanzai :http://blog.csdn.net/haibusuanyun/article/details/21277495

共享池之六:shared pool latch/ library cache latch /lock pin 简介的更多相关文章

  1. Oracle Shared Pool之Library Cache

    1. Shared Pool组成 Shared Pool由许多区间(Extent)组成,这些区间又由多个连续的内存块(Chunk)组成,这些内存块大小不一.从逻辑功能角度,Shared pool主要包 ...

  2. 产生library cache latch原因

    产生library cache latch原因The library cache latches protect the cached SQL statements and objects' defi ...

  3. [20190319]shared pool latch与library cache latch的简单探究.txt

    [20190319]shared pool latch与library cache latch的简单探究.txt --//昨天看Oracle DBA手记3:数据库性能优化与内部原理解析.pdf 电子书 ...

  4. [转载】——故障排除:Shared Pool优化和Library Cache Latch冲突优化 (文档 ID 1523934.1)

    原文链接:https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrlstate=23w4l35u5_4&id=152393 ...

  5. 【每日一摩斯】-Shared Pool优化和Library Cache Latch冲突优化 (1523934.1)-系列3

    减轻Shared Pool负载 Parse一次并执行多次        在OLTP类型的应用中,最好的方法是只让一个语句被解析一次,然后保持这个cursor的打开状态,在需要的时候重复执行它.这样做的 ...

  6. latch:library cache

    一:硬解析造成的shared pool latch 争用: 每一个sql被执行之前,先要到library cache中根据hash_value查找parent cursor,这就需要先获得librar ...

  7. Oracle内存详解之 Library cache 库缓冲

    Oracle内存详解之 Library cache 库缓冲 2017年11月09日 11:38:39 阅读数:410更多 个人分类: 体系结构 Library cache是Shared pool的一部 ...

  8. Oracle内存详解之二 Library cache 库缓冲-转载

    Library cache是Shared pool的一部分,它几乎是Oracle内存结构中最复杂的一部分,主要存放shared curosr(SQL)和PLSQL对象(function,procedu ...

  9. 共享内存shared pool (5):详解一条SQL在library cache中解析

    前面介绍的 shared pool,library cache结构,都是为了说明一条SQL是如何被解析的.先看下面的图: 图中涉及的各结构简单介绍 父HANDLE,里面有父游标堆0的地址.. 父游标堆 ...

随机推荐

  1. final,static

    如果输入参数在方法体执行过程中,强制不能被修改,那么参数类型前加final比较安全. final修饰的函数会被编译器优化,优化意味着编译器可能将该方法用内联(inline)方式载入.final修饰变量 ...

  2. ajax简单案例:字符串返回类型

    小知识点: implode("^",$v) 拼数组为字符串, split/explode("|")   拆字符串为数组; "你好"-> ...

  3. TTL电平和CMOS电平总结

    TTL电平和CMOS电平总结 1,TTL电平:          输出高电平>2.4V,输出低电平<0.4V.在室温下,一般输出高电平是3.5V,输出低电平是0.2V.最小输入高电平和低电 ...

  4. 剑指offer系列44---只出现一次 的数字

    [题目]一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. * [思路]异或性质:数异或自己即为0: * 一个数组中,从头到尾异或的结果为不重复数字异或结果. ...

  5. Nexus私服使Maven更加强大

    前边简单介绍了Maven,而Maven默认提供的中央仓库是在远程网络服务Appache提供的,这对于我们开发时不合理的.如果我们没网了或者什么情况,我们怎么办?也就是说我们队中央仓库的依赖性太大.而N ...

  6. 【转】双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计

    架构简介 前几天网友来信说帮忙实现这样一个架构:只有两台机器,需要实现其中一台死机之后另一台能接管这台机器的服务,并且在两台机器正常服务时,两台机器都能用上.于是设计了如下的架构.此架构主要是由kee ...

  7. 跟我一起写Makefile--- 变量(嵌套变量+追加变量+overrid+多行变量+环境变量+目标变量+模式变量)

    目录(?)[-] 使用变量 一变量的基础 二变量中的变量 三变量高级用法 四追加变量值 五override 指示符 六多行变量 七环境变量 八目标变量 九模式变量 使用变量 ———— 在Makefil ...

  8. Screen-后台运行

    文章转自:http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html 本来想搜集资料写一个的,结果发现该博主已经总结的很好,条理清晰. ...

  9. "XX cannot be resolved to a type "eclipse报错及解决说明

    转自:http://zhaoningbo.iteye.com/blog/1137215 引言: eclipse新导入的项目经常可以看到“XX cannot be resolved to a type” ...

  10. TSP(旅行者问题)——动态规划详解(转)

    1.问题定义 TSP问题(旅行商问题)是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次然后回到出发城市,并要求所走的路程最短. 假设现在有四个城市,0,1,2,3,他们之间的代价如图一,可以存成 ...