上一篇blog只是从概念上理解Library cache,本篇则是将Library cache从内存中dump出来,看看其结构。

基本命令

ALTER SESSION SET EVENTS 'immediate trace name LIBRARY_CACHE level LL';

其中LL代表Level级别,对于9.2.0及以后版本,不同Level含义如下:
Level =1 ,转储Library cache统计信息
Level =2 ,转储hash table概要
Level =4 ,转储Library cache对象,只包含基本信息
Level =8 ,转储Library cache对象,包含详细信息(包括child references,pin waiters等)
Level =16,增加heap sizes信息
Level =32,增加heap信息
--生成dump文件,level 7 包含(level 1,2,4)
SQL> ALTER SESSION SET EVENTS 'immediate trace name LIBRARY_CACHE level 7'; Session altered. SQL> select value from v$diag_info where name like 'De%'; VALUE
--------------------------------------------------------------------------------
/u01/diag/rdbms/oracle/beijing/trace/beijing_ora_18571.trc SQL>

解释文件中各个部分

******************************************************
Library Cache Dump LIBRARY CACHE STATISTICS:
namespace gets hit ratio pins hit ratio reloads invalids
-------------- --------- --------- --------- --------- ---------- ----------
SQL AREA 25409 0.601 183722 0.944 780 261
TABLE/PROCEDURE 43224 0.919 42030 0.858 1189 0
BODY 4555 0.973 7393 0.978 15 0
TRIGGER 245 0.869 401 0.918 1 0
......... 这部分信息是 level 1 对应的信息,也是v$librarycache中显示的.
****************************************************** SGA:360dbff4 Flags=2c7
DebugContext: DebugNameSpace=0 DebugType=0 DebugLevel=0x0
LIBRARY CACHE HASH TABLE: size=131072 count=6881
Buckets with more than 20 objects:
NONE
Hash Chain Size Number of Buckets
--------------- -----------------
0 124370
1 6524 --包含1个library cache handle的Bucket为6524个
2 177 --包含2个library cache handle的Bucket为177个
3 1 --包含3个library cache handle的Bucket为1个
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 0
20 0
>20 0 这部分信息是 level 2 对应的信息.
LIBRARY CACHE HASH TABLE: size=131072 count=6881
count:即整个LIBRARY CACHE中library cache handle的个数 count=6881 = 1*6524 + 2*177 + 3*1
****************************************************** Bucket: #=84 Mutex=360dd188(430000, 31, 0, 6)
LibraryHandle: Address=31dd2720 Hash=da040054 LockMode=0 PinMode=0 LoadLockMode=0 Status=VALD
ObjectName: Name=select LOW_OPTIMAL_SIZE, HIGH_OPTIMAL_SIZE, OPTIMAL_EXECUTIONS, ONEPASS_EXECUTIONS, MULTIPASSES_EXECUTIONS, TOTAL_EXECUTIONS from GV$SQL_WORKAREA_HISTOGRAM where INST_ID = USERENV('Instance') FullHashValue=1cb59bc0340f2b79174a091cda040054 Namespace=SQL AREA(00) Type=CURSOR(00) Identifier=3657695316 OwnerIdn=0
Statistics: InvalidationCount=0 ExecutionCount=0 LoadCount=4 ActiveLocks=0 TotalLockCount=3 TotalPinCount=1
Counters: BrokenCount=1 RevocablePointer=1 KeepDependency=1 KeepHandle=1 BucketInUse=2 HandleInUse=2
Concurrency: DependencyMutex=31dd2788(0, 0, 0, 0) Mutex=31dd27d4(67, 72, 0, 6)
Flags=RON/PIN/TIM/PN0/DBN/[10012841]
WaitersLists:
Lock=31dd2778[31dd2778,31dd2778]
Pin=31dd2780[31dd2768,31dd2768]
Timestamp: Current=03-11-2015 01:23:44
LibraryObject: Address=310ba104 HeapMask=0000-0001-0001 Flags=EXS[0000] Flags2=[0000] PublicFlags=[0000]
ChildTable: size='16'
Child: id='0' Table=310bb080 Reference=310ba70c Handle=31dd249c
NamespaceDump:
Parent Cursor: sql_id=1fkh93md0802n parent=0x310ba188 maxchild=1 plk=n ppn=n
LibraryHandle: Address=33535000 Hash=a80a0054 LockMode=0 PinMode=0 LoadLockMode=0 Status=0
ObjectName: Name=SELECT COUNT(*) FROM MGMT_JOB_EXEC_EVENT_PARAMS WHERE EXECUTION_ID=:B1 FullHashValue=c5d8c8ca1cdd0550b7315484a80a0054 Namespace=SQL AREA(00) Type=CURSOR(00) Identifier=0 OwnerIdn=0
Statistics: InvalidationCount=0 ExecutionCount=0 LoadCount=0 ActiveLocks=0 TotalLockCount=0 TotalPinCount=0
Counters: BrokenCount=1 RevocablePointer=1 KeepDependency=0 KeepHandle=0 BucketInUse=0 HandleInUse=0
Concurrency: DependencyMutex=33535068(0, 1, 0, 0) Mutex=335350b4(67, 23, 0, 6)
Flags=RON/PIN/PN0/DBN/[10010040]
WaitersLists:
Lock=33535058[33535058,33535058]
Pin=33535060[33535048,33535048]
Timestamp:
NamespaceDump:
Parent Cursor: sql_id=bfcanhkn0n02n parent=(nil) maxchild=0 plk=n ppn=n 这部分信息是 level 4 对应的信息.
Bucket: #=84 84应该是索引号了。Bucket只是一类相关联的LibraryHandle的标识,是一个逻辑概念
LibraryHandle: 此bucket中包含 2 个 LibraryHandle ******************************************************

共享内存shared pool (4):Library cache 转储文件的更多相关文章

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

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

  2. 共享内存shared pool (3):Library cache

    Shared pool物理层面上由许多内存块(chunck)组成.从逻辑功能划分,Shared pool主要由三部分组成:Library cache,Dictionary cache和Control ...

  3. 共享池之六:shared pool latch/ library cache latch /lock pin 简介

    latch:library cache --desc v$librarycache; latch:library cache用于保护hash bucket.library cache lock保护HA ...

  4. Oracle Shared Pool之Library Cache

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

  5. 共享内存shared pool (6):追踪sql语句

    构建实验数据 --使用NC50用户查询(会话1) SQL> conn NC50/NC50 Connected. SQL> create table emp as select * from ...

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

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

  7. linux内核剖析(十一)进程间通信之-共享内存Shared Memory

    共享内存 共享内存是进程间通信中最简单的方式之一. 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区. 共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程 ...

  8. 进程间通信之-共享内存Shared Memory--linux内核剖析(十一)

    共享内存 共享内存是进程间通信中最简单的方式之中的一个. 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区. 共享内存同意两个或很多其他进程訪问同一块内存,就如同 malloc() 函数 ...

  9. oracle 共享池( shared pool )

    Oracle共享池 Oracle共享池(Share Pool)属于SGA,由库高速缓存(library cache)和数据字典高速缓存(data dictionary cache)组成. 库高速缓存 ...

随机推荐

  1. Android——学习笔记

    1.this注意 @Override            public void onItemSelected(AdapterView<?> parent, View view,     ...

  2. 剑指Offer:面试题12——打印1到最大的n位数(java实现)

    问题描述: 输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数即999. 思路1:最简单的想法就是先找出最大的n位数,然后循环打印即可. public ...

  3. C#调用C dll,结构体传参

    去年用wpf弄了个航线规划软件,用于生成无人机喷洒农药的作业航线,里面包含了不少算法.年后这几天将其中的算法移植到C,以便其他同事调用.昨天在用C#调用生成的dll时,遇到一些问题,折腾了好久才解决. ...

  4. Entity FrameWork 与 NHibernate

      1 Nhibernate 展示了NHibernate在数据库和用程序之间提供了一个持久层. 应用程序自己提供ADO.NET连接,并且自行管理事务.NHibernate体系结构如图1-51所示.它体 ...

  5. android手机自带浏览器无法识别apk文件

    在项目中遇到安卓自带浏览器下载成功 , 但无法打开已下载的APK文件自动安装的问题,特别是三星系列的手机普遍存在这种问题,google后发现也有朋友遇到类似的问题: http://bbs.csdn.n ...

  6. iOS 根据字符串来定位地址

    - (void)viewDidLoad { [super viewDidLoad]; self.geocoder = [[CLGeocoder alloc]init]; // 设置地图可缩放 self ...

  7. ionic 嵌套view 的方法

    我一直想在一个页面的同一个 DIV 里面嵌入一个不同的 HTML文件  ....但是总是没有达到我要的效果.....才发现原来我没有加一个 name 我用angular-ui 插件 里面的样式  总是 ...

  8. Bootstrap <第一篇>

    一.使用Bootstrap要引用的文件 要使用Bootstrap,基本架构要引用如下文件: <link href="bootstrap.min.css" rel=" ...

  9. ERDAS 2013与ArcGIS10.1安装时的兼容性问题

    在Regedit中HKEY_LOCAL_MACHINE->SOFTWARE->FLEXlm License Manager下新建一个“ERDAS License Manager”,然后按照 ...

  10. Linux下的”锁“事儿

    原由 之所以写这篇文章当然还是在面试中涉及了对本文标题的相关问题-互斥锁和自旋锁的区别.听到这个问题的时候,我是比较忐忑的.互斥锁我还能简单说一些,但是对于自旋锁的了解几乎为零.为此,将总结Linux ...