当前位置: 首页 » 信息列表
使用BBED帮助理解Oracle数据块结构
  • 出处:博客 日期:2011-12-05
  •   
  • 分享到:

  BBEDOracle提供的块编辑器,借助BBED,可以帮助我们更好的理解Oracle的Block的结构。当然,反过来说,也只有更加理解块的结构,才能更好的利用BBED完成某些特殊情况下的灾难恢复。

  Oracle Data Block的结构简图如下,其中从Data header到Row Data部分合称Data Layer:

  ---------------------

  - Cache Layer -

  ---------------------

  - Transaction Layer -

  ---------------------

  - Data Header -

  ---------------------

  - Table Directory -

  ---------------------

  - Row Directory -

  ---------------------

  - Free Space -

  ---------------------

  - Row Data -

  ---------------------

  - Tailchk -

  ---------------------

  通过bbed的map命令,可以看到数据块内部的一些数据结构名:

以下是代码片段:
    BBED> map
  File: /u01/oracle/oradata/dbmon/system.dbf (1)
  Block: 31729 Dba:0x00407bf1
  ------------------------------------------------------------
  KTB Data Block (Table/Cluster)
  struct kcbh, 20 bytes @0
  struct ktbbh, 72 bytes @20
  struct kdbh, 14 bytes @92
  struct kdbt[1], 4 bytes @106
  sb2 kdbr[336] @110
  ub1 freespace[821] @782
  ub1 rowdata[6585] @1603
  ub4 tailchk @8188

  Cache Layer:Block的第一部分,长度为20字节,内部数据结构名为kcbh,包括

  type_kcbh:块类型(table/index,rollback segment,temporary segment等)

  frmt_kcbh:块格式(v6,v7,v8)

  rdba_kcbh:块地址DBA

  bas_kcbh/wrp_kcbh:SCN

  seq_kcbh:块的序列号

  flg_kcbh:块的标志

以下是代码片段:
    BBED> p kcbh
  struct kcbh, 20 bytes @0
  ub1 type_kcbh @0 0x06
  ub1 frmt_kcbh @1 0xa2
  ub1 spare1_kcbh @2 0x00
  ub1 spare2_kcbh @3 0x00
  ub4 rdba_kcbh @4 0x00407bf1
  ub4 bas_kcbh @8 0xd6449de8
  ub2 wrp_kcbh @12 0x0595
  ub1 seq_kcbh @14 0x03
  ub1 flg_kcbh @15 0x04 (KCBHFCKV)
  ub2 chkval_kcbh @16 0x9130
  ub2 spare3_kcbh @18 0x0000

 

  Transaction Layer:内部结构名kcbbh。分成两部分,第一部分为固定长度,长度为24字节,包含事务相关的一些基本信息。第二部分为可变长度,包含itl,长度根据itl条目的个数变化,每个itl长度为24字节,内部结构名ktbbhitl。

以下是代码片段:
    BBED> p ktbbh
  struct ktbbh, 72 bytes @20
  ub1 ktbbhtyp @20 0x01 (KDDBTDATA)
  union ktbbhsid, 4 bytes @24
  ub4 ktbbhsg1 @24 0x000050fc
  ub4 ktbbhod1 @24 0x000050fc
  struct ktbbhcsc, 8 bytes @28
  ub4 kscnbas @28 0xd6449de7
  ub2 kscnwrp @32 0x0595
  b2 ktbbhict @36 2
  ub1 ktbbhflg @38 0x02 (NONE)
  ub1 ktbbhfsl @39 0x00
  ub4 ktbbhfnx @40 0x00000000
  struct ktbbhitl[0], 24 bytes @44
  struct ktbitxid, 8 bytes @44
  ub2 kxidusn @44 0x0008
  ub2 kxidslt @46 0x000c
  ub4 kxidsqn @48 0x0000e991
  struct ktbituba, 8 bytes @52
  ub4 kubadba @52 0x0080222e
  ub2 kubaseq @56 0x03a4
  ub1 kubarec @58 0x22
  ub2 ktbitflg @60 0x8000 (KTBFCOM)
  union _ktbitun, 2 bytes @62
  b2 _ktbitfsc @62 1429
  ub2 _ktbitwrp @62 0x0595
  ub4 ktbitbas @64 0xd6449de6
  struct ktbbhitl[1], 24 bytes @68
  struct ktbitxid, 8 bytes @68
  ub2 kxidusn @68 0x0008
  ub2 kxidslt @70 0x0015
  ub4 kxidsqn @72 0x0000e992
  struct ktbituba, 8 bytes @76
  ub4 kubadba @76 0x0080222e
  ub2 kubaseq @80 0x03a4
  ub1 kubarec @82 0x23
  ub2 ktbitflg @84 0x0001 (NONE)
  union _ktbitun, 2 bytes @86
  b2 _ktbitfsc @86 0
  ub2 _ktbitwrp @86 0x0000
  ub4 ktbitbas @88 0x00000000

  Data Layer:包括Data Header,Table Directory,Row Directory,Free Space和Row Data。其中

  Data Header:长度14字节,内部数据结构名kdbh

以下是代码片段:
    BBED> p kdbh
  struct kdbh, 14 bytes @92
  ub1 kdbhflag @92 0x00 (NONE)
  b1 kdbhntab @93 1
  b2 kdbhnrow @94 336
  sb2 kdbhfrre @96 -1
  sb2 kdbhfsbo @98 690
  sb2 kdbhfseo @100 1511
  b2 kdbhavsp @102 821
  b2 kdbhtosp @104 821

 

Table Directory: 一般table只有一个条目,cluster则有一个或多个条目。每个条目长4字节,内部数据结构名kdbt。

以下是代码片段:
    BBED> p kdbt
  struct kdbt[0], 4 bytes @106
  b2 kdbtoffs @106 0
  b2 kdbtnrow @108 336

  Row Directory:数目由块中数据的行数决定,每个条目长2字节,内部数据结构名kdbr

以下是代码片段:
    BBED> p kdbr
  sb2 kdbr[0] @110 7998
  sb2 kdbr[1] @112 8017
  ...
  sb2 kdbr[335] @780 1511

  Free Space:表示数据块中可用空间,内部数据结构名freespace

  Row Data:表示实际的数据,内部数据结构名rowdata

  Tailchk:保存在块结尾用于校验的数据,长度4个字节,内部结构名tailchk。

以下是代码片段:
    BBED>p tailchk
  ub4 tailchk @8188 0x9de80603

  注意到tailchk=bas_kcbh低2字节(9de8)+type_kcbh(06)+seq_kcbh(03)

(责任编辑:李慧芳)

BBED块编辑器,Oracle数据块结构,Oracle数据,Oracle块编辑器
系统架构-数据库
网友昵称:
热门文章
周排行月排行
论坛回复排行
论坛点击排行
下载排行
评论
点击工具栏编辑内容
公司介绍 - 关于CIO360 - 友情链接 - 广告服务 - 法律声明 - 联系我们 - 网站地图 - 管理入口    
北京赛迪传媒投资股份有限公司 版权所有 未经许可 请勿转载
Copyright © 2008 Beijing CCID Media Investments Co., LTD. All Rights Reserved.
京ICP备09005911号-1 京公网安备110108007146号
视频及多媒体网络活动由展视互动提供技术支持!