Library cache中的信息

2020-06-26 00:00:00 数据库 专区 对象 源码 信息
(读shared pool的深入探讨(四)--shared pool的内存分配及管理一文的疑问) 使用ALTER SESSION SET EVENTS 'immediate trace name LIBRARY_CACHE level 32';命令后转储Library cache相关信息,在转储信息中,可以找到所执行SQL语句所依赖的对象信息, 这里的handle=52d82e58就是sql依赖的对象信息,如下所示(摘自eygle的例子),我的问题是,Library cache不是只包含SQL语句的语法树、执行计划等信息,为什么这里还包含表信息。 还有就是: ALTER SESSION SET EVENTS 'immediate trace name LIBRARY_CACHE level LL'; 与 alter session set events 'immediate trace name heapdump level 2'; 的区别。 是不是个命令转储的信息只包括LIBRARY_CACHE,而第二个命令转储的信息包括共享池中的所有内容。 [php] BUCKET 63037: LIBRARY OBJECT HANDLE: handle=52d82e58 name=EYGLE.EMP hash=7310f63d timestamp=08-26-2004 10:23:40 namespace=TABL/PRCD/TYPE flags=KGHP/TIM/SML/[02000000] kkkk-dddd-llll=0000-0501-0501 lock=0 pin=0 latch#=1 lwt=0x52d82e70[0x52d82e70,0x52d82e70] ltm=0x52d82e78[0x52d82e78,0x52d82e78] pwt=0x52d82e88[0x52d82e88,0x52d82e88] ptm=0x52d82ee0[0x52d82ee0,0x52d82ee0] ref=0x52d82e60[0x52d82e60, 0x52d82e60] lnd=0x52d82eec[0x52d7dcf0,0x52d89fc8] LIBRARY OBJECT: object=52d81594 type=TABL flags=EXS/LOC[0005] pflags= [00] status=VALD load=0 ==>Type:对象类型,这里是一张表 ==>flags:代表对象状态 DATA BLOCKS: data# heap pointer status pins change alloc(K) size(K) ----- -------- -------- ------ ---- ------ -------- -------- 0 52d8c1e4 52d8161c I/-/A 0 NONE 0.66 1.09 8 52d81238 52d80a18 I/-/A 0 NONE 1.10 1.13 10 52d8129c 52d80ea0 I/-/A 0 NONE 0.12 0.37 HEAP DUMP OF DATA BLOCK 0: ****************************************************** HEAP DUMP heap name="library cache" desc=0x52d8c1e4 extent sz=0x224 alt=32767 het=16 rec=9 flg=2 opc=0 parent=0x5000002c owner=0x52d81594 nex=(nil) xsz=0x224 ==>每个heap descriptor 都包含一个owner部分,指向所有者,这里的 52d81594 也就是EYGLE.EMP ==>指向的Library对象: LIBRARY OBJECT: object=52d81594 EXTENT 0 addr=0x52d81220 Chunk 52d81228 sz= 540 perm "perm " alo=196 52D81220 5000021D 00000000 [...P....] 52D81230 52D81584 000000C4 5000002C 00000824 [...R....,..P$...] 52D81240 52D81594 52D80A00 52D80A08 00000000 [...R...R...R....] (等等,省略) [/php] 原文出处:http://www.eygle.com/internal/shared_pool-4.htm

相关文章