zoukankan      html  css  js  c++  java
  • 共享内存 share pool (1):heap /extent /chunk/

    相关概念

    • 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 [  1] Latch: 0x200065ec  Index: 1  Flags:  3  State: 2  next:  (nil)
    Slot [  2] Latch: 0x387af42c  Index: 1  Flags:  3  State: 2  next:  (nil)
    Slot [  3] Latch: 0x387af4b4  Index: 1  Flags:  3  State: 2  next:  0x200a7f60
    Slot [  4] 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.permpermanent--永久的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

  • 相关阅读:
    生产者-消费者问题
    【k8s】4-Service转发规则 ingress 七层代理
    【k8s】3-kubectl 命令以及 yaml文件学习
    【k8s】2-安装部署 以及flannel访问失败问题 The connection to the server raw.githubusercontent.com was refused
    【k8s】1-kubernetes组件介绍 网络情况 汇总
    Django xadmin 学习转载
    【python】字节转换 base64 encode decode pickle
    【Django】windows安装fdfs_client-py-master.zip 出现 error: Microsoft Visual C++ 14.0 is required.
    【docker】命令学习
    【DJango项目】3.JWT验证
  • 原文地址:https://www.cnblogs.com/polestar/p/4353785.html
Copyright © 2011-2022 走看看