相关概念

  • CHUNK: Shared pool物理层面上由许多内存块组成,这些内在块称为chunk。但是chunk是大小不一的,在内存中一个chunk是连续的。
  • EXTENT:由多个连续的chunk组成
  • HEAP: 堆由一个或多个大小不一的extent组成

将shool pool内存dump出来

将shool pool内存dump出来:

[oracle@oracle ~]$ sqlplus /nolog
SQL> conn /as sysdba
SQL> alter session set events 'immediate trace name heapdump level 2';
SQL> select value from v$diag_info where name like 'De%';
VALUE
--------------------------------------------------------------------------------
/u01/diag/rdbms/oracle/beijing/trace/beijing_ora_14649.trc SQL>

解释文件中各个部分

******************************************************
Trace file /u01/diag/rdbms/oracle/beijing/trace/beijing_ora_9252.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app
System name: Linux
Node name: oracle.11g
Release: 2.6.9-55.EL
Version: #1 Wed May 2 13:52:16 EDT 2007
Machine: i686
Instance name: beijing
Redo thread mounted by this instance: 1
Oracle process number: 36
Unix process pid: 9252, image: oracle@oracle.11g (TNS V1-V3) *** 2015-03-11 09:29:17.546
*** SESSION ID:(46.362) 2015-03-11 09:29:17.546
*** CLIENT ID:() 2015-03-11 09:29:17.546
*** SERVICE NAME:(SYS$USERS) 2015-03-11 09:29:17.546
*** MODULE NAME:(sqlplus@oracle.11g (TNS V1-V3)) 2015-03-11 09:29:17.546
*** ACTION NAME:() 2015-03-11 09:29:17.546 这部分是关于trace文件的基本信息,oracle版本、资源情况、用户和会话等
****************************************************** KGH Latch Directory Information
ldir state: 2 last allocated slot: 99
Slot [] Latch: 0x200065ec Index: 1 Flags: 3 State: 2 next: (nil)
Slot [] Latch: 0x387af42c Index: 1 Flags: 3 State: 2 next: (nil)
Slot [] Latch: 0x387af4b4 Index: 1 Flags: 3 State: 2 next: 0x200a7f60
Slot [] Latch: 0x200087dc Index: 1 Flags: 3 State: 2 next: (nil)
........ 这部分记录的是shared pool中的latch信息。每个latch的具体信息可以通过视图V$LATCH、V$LATCH_PARENT、V$LATCH_CHILDREN或者表x$ksllt查出
****************************************************** HEAP DUMP heap name="sga heap" desc=0x200010b4
extent sz=0x7ad4 alt=124 het=32767 rec=9 flg=-126 opc=0
parent=(nil) owner=(nil) nex=(nil) xsz=0x0 heap=(nil)
fl2=0x60, nex=(nil)
ds for latch 1: 0x2002a6f0 0x2002b328 0x2002bf60 0x2002cb98
reserved granule count 0 (granule size 4194304) 这是堆dump信息的头部,heap name说明了内存所述的堆,shared pool是属于SGA区的,因此,这里是"sga heap"
****************************************************** HEAP DUMP heap name="sga heap(1,0)" desc=0x2002a6f0
extent sz=0xfc4 alt=124 het=32767 rec=9 flg=-126 opc=0
parent=(nil) owner=(nil) nex=(nil) xsz=0x400000 heap=(nil)
fl2=0x20, nex=(nil)
latch set 1 of 1
durations enabled for this heap
reserved granules for root 0 (granule size 4194304) 先了解两个概念:子缓冲池,子分区。
从Oracle 9i开始,Shared Pool可以被分割为多个子缓冲池(SubPool)进行管理,以提高并发性,减少竞争。Shared Pool的每个SubPool可以被看作是一个Mini Shared Pool,拥有自己独立的Free List、内存结构以及LRU List。 当仅有一个子缓冲池时,Shared Pool被划分为sga heap(1,0)~sga heap(1,3),共4个子分区
HEAP DUMP heap name="sga heap(1,0)" desc=0x2002a6f0
HEAP DUMP heap name="sga heap(1,1)" desc=0x2002b328
HEAP DUMP heap name="sga heap(1,2)" desc=0x2002bf60
HEAP DUMP heap name="sga heap(1,3)" desc=0x2002cb98 当使用两个子缓冲池时,Shared Pool则被划分为8个子分区进行管理:
HEAP DUMP heap name="sga heap(1,0)"
HEAP DUMP heap name="sga heap(1,1)"
HEAP DUMP heap name="sga heap(1,2)"
HEAP DUMP heap name="sga heap(1,3)"
HEAP DUMP heap name="sga heap(2,0)"
HEAP DUMP heap name="sga heap(2,1)"
HEAP DUMP heap name="sga heap(2,2)"
HEAP DUMP heap name="sga heap(2,3)" ******************************************************
EXTENT 0 addr=0x33800000
Chunk 33800038 sz= 24 R-freeable "reserved stoppe"
Chunk 33800050 sz= 212888 R-free " "
Chunk 33833fe8 sz= 24 R-freeable "reserved stoppe"
Chunk 33834000 sz= 3981312 perm "perm " alo=1227684
.......
.......
EXTENT 16 addr=0x39000000 --起始地址
Chunk 39000038 sz= 24 R-freeable "reserved stoppe" --39000038为十六进制地址,sz为Chunk大小
Chunk 39000050 sz= 212888 R-free " "
Chunk 39033fe8 sz= 24 R-freeable "reserved stoppe"
Chunk 39034000 sz= 3980148 perm "perm " alo=3980148
Chunk 393ffb74 sz= 1016 perm "perm " alo=1016
Chunk 393fff6c sz= 148 free " "
Total heap size = 71302216 --这一shared pool区的总的大小 每个分区中的EXTENT都是由连续,但大小不等的Chunk组成。 Chunk可以分为4类-或者叫4种状态:
1.free:chunk中没有有效的对象,可以不受限制的分配
2.recr:recreatable,--可重用的,chunk里面包含的对象可以被临时性的移 走,如果需要,可以重建,例如共享SQL语句
3.freeabl:--可释放的,session用过这个chunk,里面存放的对象数据是session 在处理过程中产生的,没有办法重建,这点不同于recr。因此这个chunk不能被临时性的移走。但是在合适的时间段可以被释放。
4.perm:permanent,--永久的SGA的固定对象等,chunk中包含永久性的对象,但是大型的permanent类型的chunk中可能包含可用空间,需要的时候,这些空间可以被释放。 ******************************************************

参考blog:

http://blog.csdn.net/haibusuanyun/article/details/17803523

http://www.hellodba.com/reader.php?ID=111&lang=CN

http://book.51cto.com/art/201001/177241.htm

共享内存 share pool (1):heap /extent /chunk/的更多相关文章

  1. 共享内存 share pool (2):BUCKET /FREE LISTS /RESERVED FREE LISTS /UNPINNED RECREATABLE CHUNKS (lru first)

    相关概念 BUCKET :每个bucket上挂有一个 chunk list.同一个BUCKET中的chunk在物理地址上是不一定相邻的 FREE LISTS:按bucket划分,共有255个,buck ...

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

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

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

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

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

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

  5. 共享内存shared pool (4):Library cache 转储文件

    上一篇blog只是从概念上理解Library cache,本篇则是将Library cache从内存中dump出来,看看其结构. 基本命令 ALTER SESSION SET EVENTS 'imme ...

  6. ORA-04031: 无法分配 共享内存

    今天现场项目oracle系统定时器插入数据报错: --ORA-04031: 无法分配 3936 字节的共享内存 ("shared pool","truncate tabl ...

  7. 关于linux 共享内存查看已经完整释放

    完整删除共享内存脚本 #!/bin/sh function rmshm() { zero_status=`ipcs -m|awk '{print $6}'|grep -w 0|wc -l` if [ ...

  8. oracle 内存结构 share pool sql解析的过程

    1.sql解析的过程 oracle首先将SQL文本转化为ASCII字符,然后根据hash函数计算其对应的hash值(hash_value).根据计算出的hash值到library cache中找到对应 ...

  9. vector存入共享内存(了解)

    昨天在上篇blog里描写了如何把STL容器放到共享内存里去,不过由于好久不写blog,发觉词汇组织能力差了很多,不少想写的东西写的很零散,今天刚好翻看自己的书签,看到一篇挺老的文章,不过从共享内存到S ...

随机推荐

  1. php实例根据ID删除mysql表中的数据

    在动态网站开发中,我们经常要根据ID删除表中的数据,例如用户删除帖子,就需要根据ID删除帖子.本文章向大家介绍php根据ID删除表中数据的实例,需要的朋友可以参考一下本文章的实例. php实例根据ID ...

  2. JavaScript对象的创建总结

    方式 缺点 优点 基于已有对象扩充属性和方法 不可重用,没有约束 无 工厂方法 检测不出是什么的实例 简单封装,可以传参 构造方法 每创建一个对象就有开辟存放方法的空间 能通过instanceof检测 ...

  3. C++编译错误syntax error : identifier 'THIS_FILE' 解决方法

    你到代码里搜索 THIS_FILE看是不是它定义在别的头文件前面了,如果是,把它们的头文件紧跟到Stdafx.h后面 我遇到过这问题,这样搞定的 今天遇到个编译错误:..\vc98\include\n ...

  4. python实现批量ping IP,并将结果写入

    最近工作需要,写了一个Python小脚本,分享给大家,因为公司的IP用的差不多了,然后离职人员的IP有没有及时删除,导致没多少IP用了,所以做了一个python脚本跑了跑,清出来一堆ping不通的IP ...

  5. Type-base dispatch

    In the previous section we added two Time objects, but you also might want to add an integer to a Ti ...

  6. log4net按等级多种方式记录日志

    log4net.config <?xml version="1.0"?> <configuration> <configSections> &l ...

  7. 未来十年的十三条思考(FW)

    支付宝在某种意义上延续了“双十一”的购物狂欢. 如果你关注微信朋友圈,你会发现支付宝最近以各种广告.方案植入方式推出强劲广告.而其中很重要的一个促销手段便是,从今年12月1日到12月15日,用户在一些 ...

  8. VC与JavaScript交互(二) --- 调用JS函数

    这一章,我们来动手实践VC调用JS函数. 我们动手写一个HTML,其中包含这样一段JS代码: //[html] <script type="text/javascript"& ...

  9. check version cordova

    cordova plugin add https://github.com/whiteoctober/cordova-plugin-app-version.git 这个插件很简单,但是要注意点的是:需 ...

  10. C++ 必知必会: 条款1: 数据抽象

    数据抽象, 具有C语言经理的我, 原先是将其看做是一个数据的集合, 把自己常用的数据通过某种方式总结,集合起来, 使用的时候能够更加方便------其实这个还是结构体思想的延续,结构体内部包含了若干的 ...