背景

继续上文:深入理解shared pool共享池之library cache系列一,学习library cache数据结构,本文主要学习library cache object(lco)的数据结构:data blocks

为了直观理解,先放一张网上关于DATA BLOCK中存储不同HEAP的结构图:

结论

1,data block是存储不同HEAP的一个结构,每个HEAP存储的内容不同
2,分析heap请最终查看ANONYMOUS LIST:对应的library object handle中的data blocks包括的heap
3,data blocks的结构:
    DATA BLOCKS:
    data#     heap  pointer    status pins change whr alloc(K)  size(K)
    ----- -------- -------- --------- ---- ------ --- -------- --------
        0 a353a238 9d9b7788 I/P/A/-/-    0 NONE   00      2.99     3.12  --heap 0
        6 9d9b7ba8 9bb1f118 I/-/A/-/E    0 NONE   00      5.06     7.90  --heap 6

4,dump特定的data blocks 中对应的heap,其命令:
oradebug setmypid
oradebug dump heapdump_addr 2 0xa353a238  ---0x后面对应上述data blocks中对应的heap addr        
oradebug tracefile_name

5,上述data blocks不同heap可以在v$sgastat中进行对应起来

测试

---基于应用测试示例,便于直观理解
SQL> show user
USER is "SCOTT"
SQL> create table t_data_block(a int);

Table created.

SQL> select * from t_data_block;

no rows selected

--dump LIBRARY CACHE,仅列出关注部分的内容

BUCKET 36417:
  LIBRARY OBJECT HANDLE: handle=a353a480 mtx=0xa353a5b0(1) lct=1 pct=1 cdp=1
  name=select * from t_data_block
  hash=36f9d01e6a12a3ab7b92ad2ca24a8e41 timestamp=11-23-2015 19:12:41
  namespace=CRSR flags=RON/KGHP/TIM/PN0/SML/KST/DBN/MTX/[120100d0]
  kkkk-dddd-llll=0000-0001-0001 lock=N pin=0 latch#=4 hpc=0002 hlc=0002
  lwt=0xa353a528[0xa353a528,0xa353a528] ltm=0xa353a538[0xa353a538,0xa353a538]
  pwt=0xa353a4f0[0xa353a4f0,0xa353a4f0] ptm=0xa353a500[0xa353a500,0xa353a500]
  ref=0xa353a558[0xa353a558,0xa353a558] lnd=0xa353a570[0xa353a570,0xa353a570]
    LOCK OWNERS:
        lock     user  session count mode flags
    -------- -------- -------- ----- ---- ------------------------
    9eb51a40 a4726cc0 a4726cc0     1 N    [00]
    LIBRARY OBJECT: object=9d9b9c28
    type=CRSR flags=EXS[0001] pflags=[0000] status=VALD load=0
    CHILDREN: size=16
    child#    table reference   handle
    ------ -------- --------- --------
         0 9d9b9b28  9d9b7dd8 a353a2f8  --通过child handle定位到下面的anonymous list中对应的library object handle
    DATA BLOCKS:       
    data#     heap  pointer    status pins change whr alloc(K)  size(K)
    ----- -------- -------- --------- ---- ------ --- -------- --------
        0 a35a4038 9d9b9d40 I/P/A/-/-    0 NONE   00      1.59     2.17
  BUCKET 36417 total object count=1

ANONYMOUS LIST:
LIBRARY OBJECT HANDLE: handle=a353a2f8 mtx=0xa353a428(0) lct=1 pct=2 cdp=0
  namespace=CRSR flags=RON/KGHP/PN0/EXP/[10010100]
  kkkk-dddd-llll=0000-0001-0001 lock=N pin=0 latch#=4 hpc=0002 hlc=0002
  lwt=0xa353a3a0[0xa353a3a0,0xa353a3a0] ltm=0xa353a3b0[0xa353a3b0,0xa353a3b0]
  pwt=0xa353a368[0xa353a368,0xa353a368] ptm=0xa353a378[0xa353a378,0xa353a378]
  ref=0xa353a3d0[0x9d9b7dd8,0x9d9b7dd8] lnd=0xa353a3e8[0xa353a3e8,0xa353a3e8]
    CHILD REFERENCES:
    reference latch flags
    --------- ----- -------------------
     9d9b7dd8     7 CHL[02]
    LOCK OWNERS:
        lock     user  session count mode flags
    -------- -------- -------- ----- ---- ------------------------
    9eb1fa90 a4726cc0 a4726cc0     1 N    [00]
    LIBRARY OBJECT: object=9d9b7670
    type=CRSR flags=EXS[0001] pflags=[0000] status=VALD load=0
    DEPENDENCIES: count=2 size=16
    dependency#    table reference   handle position flags
    ----------- -------- --------- -------- -------- -------------------
              0 9d9b7138  9d9b6e78 a353b358       14 DEP[01]  
              1 9d9b7138  9d9b6f78 a3539f18        0 DEP[01]  
    ACCESSES: count=1 size=16
    dependency# types
    ----------- -----
              0 0009
    TRANSLATIONS: count=1 size=16
    original    final
    -------- --------
    a353b358 a353b358
    DATA BLOCKS:
    data#     heap  pointer    status pins change whr alloc(K)  size(K)
    ----- -------- -------- --------- ---- ------ --- -------- --------
        0 a353a238 9d9b7788 I/P/A/-/-    0 NONE   00      2.99     3.12  --heap 0
        6 9d9b7ba8 9bb1f118 I/-/A/-/E    0 NONE   00      5.06     7.90  --heap 6

--dump heap 0
  SQL> oradebug setmypid
Statement processed.
SQL> oradebug dump heapdump_addr 2 0xa353a238
Statement processed.
SQL> oradebug tracefile_name
/home/ora10g/admin/ora10g/udump/ora10g_ora_22177.trc
--trc文件内容,可见HEAP 0对应的堆名为ccursor,存储SQL执行计划之类我感觉
HEAP DUMP heap name="CCursor"  desc=0xa353a238

SQL> select pool,name,bytes from v$sgastat where lower(name) like '%ccursor%';

POOL         NAME                            BYTES
------------ -------------------------- ----------
shared pool  CCursor                       3062792

--dump heap 6 
可见heap 6为存储SQL文本
HEAP DUMP heap name="sql area"  desc=0x9d9b7ba8

深入理解shared pool共享池之library cache系列二的更多相关文章

  1. 深入理解shared pool共享池之library cache系列一

    结论 1,oradebug dump library_cache不同级别dump的library cache内容及粒度会有所区别,具体见测试开始部分2,本文测示基于oradebug dump libr ...

  2. 深入理解shared pool共享池之library cache的library cache lock系列四

    本文了解下等待事件library cache lock,进一步理解library cache,之前的文章请见:  深入理解shared pool共享池之library cache的library ca ...

  3. 深入理解shared pool共享池之library cache的library cache pin系列三

    关于library cache相关的LATCH非常多,名称差不多,我相信一些人对这些概念还是有些晕,我之前也有些晕,希望此文可以对这些概念有个更为清晰的理解,本文主要学习library cache p ...

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

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

  5. shared pool详解

    共享池shared pool的概念用户提交的命令:解析.执行用户命令的解析解析的过程是一个相当复杂的过程,它要考虑各种可能的异常情况比如SQL语句涉及到的对象不存在.提交的用户没有权限等等而且还需要考 ...

  6. Oracle-buffer cache、shared pool

    http://blog.csdn.net/panfelix/article/details/38347059   buffer pool 和shared pool 详解 http://blog.csd ...

  7. Oracle Shared Pool 原理

    Oracle Shared Pool 原理 由于shared pool中最重要的是library cache,所以本文主要讲解Library cache的结构,library cache latch, ...

  8. Oracle数据库体系结构-Shared Pool

    Oracle数据库简单介绍 对象关系型数据库 重点:一致性+性能 一致性优于性能 处理模型:C/S模型 Client:用户和用户进程             Server:服务器进程,实例,数据库本身 ...

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

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

随机推荐

  1. Devexpress GridView部分常用操作总结 z

    一:Clone返回新的 DataTable Clone返回新的 DataTable,与当前的 DataTable 具有相同的架构:Copy:返回新的 DataTable,它具有与该 DataTable ...

  2. 笔记本CPU的型号和类型的区分方法

    笔记本CPU的型号和类型的区分方法: 1.所有笔记本CPU型号后面默认为M,代表移动版. 2.如果M变为H,则代表高性能版本,时钟频率更高,性能强,但功耗更大一点,如I7 4500H. 3.如果M变为 ...

  3. nyoj 37回文串

    述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串.现在要求你,给你一个字符串,可 ...

  4. Opencl API解释(二)

    欢迎关注,转载引用请注明 http://blog.csdn.net/leonwei/article/details/8909897 这里将更深入的说明一些OpenCL API的功能 1. 创建buff ...

  5. jquerymobile知识点:实现toolbar下方显示,自定义图标!

    css: .nav-glyphish-example .ui-btn .ui-btn-inner { padding-top: 40px !important; } .nav-glyphish-exa ...

  6. POJ 3734

    题目的大意: 给定待粉刷的n个墙砖(排成一行),每一个墙砖能够粉刷的颜色种类为:红.蓝.绿.黄, 问粉刷完成后,红色墙砖和蓝色墙砖都是偶数的粉刷方式有多少种(结果对10007取余). 解题思路: 思路 ...

  7. JAVA中toString方法的作用(转)

    因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不 ...

  8. End-to-End Tracing of Ajax/Java Applications Using DTrace

    End-to-End Tracing of Ajax/Java Applications Using DTrace         By Amit Hurvitz, July 2007     Aja ...

  9. C# 网络编程之网页自动登录 (一).使用WebBrower控件模仿登录

    最近学习C#网络编程中,想实现网页自动登录并提交GET/POST信息,再实现循环登录不断发送报文给服务器,服务器发送消息给客户端记录能登录的账户和密码,做到后面实现绕过验证码.动态抓取登录位置等,但由 ...

  10. Linux 安装 Python3.5

    1. 准备 操作系统:Red Hat Enterprise Linux Server release 6.5 (Santiago) Python 安装包:Python-3.5.2.tgz 下载地址:h ...