zoukankan      html  css  js  c++  java
  • First Impression on BBED: explore block structure using map command

    之前在Data Block Structure (Try to Understand)中通过dump文件来尝试去分析一个block的结构,结果费了半天劲,也没有得到一个很清晰的概念。发现BBED的map命令很好很强大,可以用来得到一个block的结构组织情况,

    通过设置dba来得到一个block的结构,如下所示...

    BBED> map /v dba 6, 12
    File: /u01/app/oracle/oradata/orcl/small_tbs01.dbf (6)
    Block:
    12 Dba:0x0180000c
    ------------------------------------------------------------
    KTB Data Block (Table/Cluster)

    struct kcbh,
    20 bytes @0
    ub1 type_kcbh
    @0
    ub1 frmt_kcbh
    @1
    ub1 spare1_kcbh
    @2
    ub1 spare2_kcbh
    @3
    ub4 rdba_kcbh
    @4
    ub4 bas_kcbh
    @8
    ub2 wrp_kcbh
    @12
    ub1 seq_kcbh
    @14
    ub1 flg_kcbh
    @15
    ub2 chkval_kcbh
    @16
    ub2 spare3_kcbh
    @18

    struct ktbbh,
    72 bytes @20
    ub1 ktbbhtyp
    @20
    union ktbbhsid, 4 bytes @24
    struct ktbbhcsc,
    8 bytes @28
    b2 ktbbhict
    @36
    ub1 ktbbhflg
    @38
    ub1 ktbbhfsl
    @39
    ub4 ktbbhfnx
    @40
    struct ktbbhitl
    [2], 48 bytes @44

    struct kdbh,
    14 bytes @100
    ub1 kdbhflag
    @100
    b1 kdbhntab
    @101
    b2 kdbhnrow
    @102
    sb2 kdbhfrre
    @104
    sb2 kdbhfsbo
    @106
    sb2 kdbhfseo
    @108
    b2 kdbhavsp
    @110
    b2 kdbhtosp
    @112

    struct kdbt
    [1], 4 bytes @114
    b2 kdbtoffs
    @114
    b2 kdbtnrow
    @116

    sb2 kdbr
    [1] @118

    ub1 freespace
    [8056] @120

    ub1 rowdata
    [12] @8176

    ub4 tailchk
    @8188


    BBED
    >

    这里面的一系列的struct,可以参见如下介绍...

    ////////////////////////////////////////////////////////////////////////////////////////
    //////////// Block Header Structure, 20 bytes//////////////////////////////////////////
    struct kcbh, 20 bytes @0
    ub1 type_kcbh @
    0 -- Block Type
    -- 01 - Undo segment header
    -- 02 - Undo data block
    -- 03 - Save undo header
    -- 04 - Save undo data block
    -- 05 - Data segment header
    -- 06 - Trans data, KTB managed data block(with ITL)
    -- 07 - Temp table data block (no ITL)
    -- 08 - Sort key
    -- 09 - Sort Run
    -- 10 - Segment free list block
    -- 11 - Data file header
    ub1 frmt_kcbh @
    1 -- Block Format 1=Oracle7, 2=Oracle8+
    ub1 spare1_kcbh @
    2 -- Not used, filler field
    ub1 spare2_kcbh @
    3 -- Not used, filler field
    ub4 rdba_kcbh @
    4 -- RDBA (4 bytes) - Relative Data Block Address
    ub4 bas_kcbh @
    8 -- SCN Base (4 bytes)
    ub2 wrp_kcbh @
    12 -- SCN Wrap (2 bytes)
    ub1 seq_kcbh @
    14 -- Sequence Number, incremented for every change made to the block at the same SCN
    ub1 flg_kcbh @
    15 -- Flag:
    -- 0x01 New Block
    -- 0x02 Delayed Logging Chang advanced SCN/seq
    -- 0x04 Check value saved - block XOR's to Zero
    -- 0x08 Temporary block
    ub2 chkval_kcbh @
    16 -- Optional block checksum (if DB_BLOCK_CHECKSUM=TRUE)
    ub2 spare3_kcbh @
    18 -- Not used, filler field

    /////////////////////////////////////////////////////////////////////////////////////////
    /////////Transaction Fixed Header Structure, 72 Bytes////////////////////////////////////
    struct ktbbh, 72 bytes @20
    ub1 ktbbhtyp @
    20 -- Block type (1=DATA, 2=INDEX)
    union ktbbhsid,
    4 bytes @24 -- Segment/Object ID
    struct ktbbhcsc, 8 bytes @28 -- SCN at last block cleanout
    b2 ktbbhict @
    36 -- Number of ITL slots
    ub1 ktbbhflg @
    38 -- 0=on the freelist
    ub1 ktbbhfsl @
    39 -- ITL TX freelist slot
    ub4 ktbbhfnx @
    40 -- DBA of next block on the freelist
    struct ktbbhitl[2], 48 bytes @44 -- ITL list index, each ITL takes up 24 bytes

    //////////////////////////////////////////////////////////////////////////////////////////
    ///////////////Data Header Structure, 14 bytes////////////////////////////////////////////
    struct kdbh, 14 bytes @100
    ub1 kdbhflag @
    100 -- N=pctfree hit(clusters)
    -- F=do not put on freelist
    -- K=flushable cluster keys
    b1 kdbhntab @
    101 -- Number of tables (>1 in clusters)
    b2 kdbhnrow @
    102 -- Number of rows (2 bytes)
    sb2 kdbhfrre @
    104 -- First free row entry index; -1=you have to add one
    sb2 kdbhfsbo @
    106 -- Freespace begin offset
    sb2 kdbhfseo @
    108 -- Freespace end offset
    b2 kdbhavsp @
    110 -- Available space in the block
    b2 kdbhtosp @
    112 -- Total available space when all TXs commit

    ////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////Table Directory Entry Structure, 4 bytes///////////////////////////
    struct kdbt[1], 4 bytes @114
    b2 kdbtoffs @
    114
    b2 kdbtnrow @
    116

    ////////////////////////////////////////////////////////////////////////////////////////
    ////////////////// Row Directory ///////////////////////////////////////////////////////
    sb2 kdbr[1] @118


    ////////////////////////////////////////////////////////////////////////////////////////
    ///////////////// Free Space ///////////////////////////////////////////////////////////
    ub1 freespace[8056] @120

    ///////////////////////////////////////////////////////////////////////////////////////
    /////////////////////Row Data//////////////////////////////////////////////////////////
    ub1 rowdata[12] @8176

    //////////////////////////////////////////////////////////////////////////////////////
    /////////////////////Block Tail Check, 4 bytes////////////////////////////////////////
    ub4 tailchk @8188 -- Lower order two bytes of SCN Base + Block Type + SCN Seq
  • 相关阅读:
    mvc form
    mvc Action上面加 [HttpPost]
    存储过程
    tj
    第25月第18天 vue
    第25月第17天 django rest framwork authentication /tmp/mysql.sock
    第25月第15天 udacity cs253
    第25月第11天 deeplearning.ai
    第25月第9天 tf_tang_poems kaggle
    第25月第8天 100-Days-Of-ML-Code
  • 原文地址:https://www.cnblogs.com/fangwenyu/p/1958273.html
Copyright © 2011-2022 走看看