一、概念介绍


Oracle ASSM(Automatic Segment Space Managed)使用位图来管理数据库中的空间,具有管理简单、高并发等优点,ASSM的整体结构是3层位图块+数据块,即4层的树状结构,如下所示,

Oracle ASSM 中Segment Header内部结构由Cache Header、Header Control及L2 BMB array三层结构组成,Oracle数据块类型代码为“type: 0x23=PAGETABLE SEGMENT HEADER”,由于bbed工具不支持查询Segment Header的物理结构,本节主要使用C语言解析Segment Header物理结构。

二、使用bbed查看PAGETABLE SEGMENT HEADER结构


SQL> create table hsql.orastar_1(c_char char(10),c_vchar varchar2(10));

Table created.

SQL> insert into hsql.orastar_1 values('a','a');

1 row created.

SQL> insert into hsql.orastar_1 values('b','bb');

1 row created.

SQL> commit;

Commit complete.

set linesize 200 pagesize 200

col owner for a10

col segment_name for a10

select owner,segment_name,header_file,header_block,SEGMENT_TYPE from dba_segments where segment_name='ORASTAR_1';

OWNER   SEGMENT_NA HEADER_FILE HEADER_BLOCK SEGMENT_TYPE

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

HSQL   ORASTAR_1 5  1698 TABLE

BBED: Release 2.0.0.0.0 - Limited Production on Fri Jan 10 18:45:52 2020

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED> set dba 5,1698

DBA             0x014006a2 (20973218 5,1698)

BBED> map /v

File: /oradata/epmsn/hsql01.dbf (5)

Block: 1698                                  Dba:0x014006a2

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

BBED-00400: invalid blocktype (35)

BBED>

三、dump结构解析


alter session set tracefile_identifier='orastar_01';

oradebug setmypid

alter system dump datafile 5 block 1698;

oradebug close_trace

oradebug tracefile_name

四、二进制结构解析


五、工具解析

使用C语言结构体解析该数据块结构,解析后的物理结构如下所示,


结构

解释

struct kcbh, 20 bytes                   @0

ub1 type_kcbh                   @0                0x23

Block type

ub1 frmt_kcbh                   @1                0xa2

Block format a2=oracle 112

ub1 spare1_kcbh                 @2                0x00

not used

ub1 spare2_kcbh                 @3                0x00

not used

ub4 rdba_kcbh                   @4                0x01400a0a

RDBA-Relative Data Block Address

ub4 bas_kcbh                    @8                0x0029cbc7

SCN Base

ub2 wrp_kcbh                    @12               0x0000

SCN Wrap

ub1 seq_kcbh                    @14               0x02

sequence number

ub1 flg_kcbh                    @15               0x04

Flag:0x01 New Block0x02 Delayed Loging Change advanced SCN/seq0x04 Check value saved-block XOR's to zero0x08 Temporary block

ub2 chkval_kcbh                 @16               0xe395

Optional block checksum(if DB_BLOCK_CHECKSUM=TRUE)

ub2 spare3_kcbh                 @18               0x0000

not used

struct ech(Extent Control Header)       @36

Extent Control Header

ub4 extents_ech                 @36               0x00000012

#extents

ub4 blocks_ech                  @40               0x00000180

#blocks

ub4 offset_ech                  @44               0x00000a9c

offset

ub4 blk_ech                     @52               0x00000080

blk#

ub4 extsize_ech                 @56               0x00000080

ext size

ub4 hw_ech                      @60               0x01401f80

Highwater

ub4 lhwmext_ech                 @92               0x00000010

ext# of Low HighWater Mark

ub4 lhwmblk_ech                 @96               0x00000010

blk# of Low HighWater Mark

ub4 lhwmextsize_ech             @100              0x00000080

ext size of Low HighWater Mark

ub4 lhwm_ech                    @104              0x01401e90

Low HighWater Mark

ub4 lhwmbmb1_ech                @124              0x01401e80

Level 1 BMB for Low HWM block

ub4 hhwmbmb1_ech                @128              0x01401f01

Level 1 BMB for High HWM block

ub4 segtype_ech                 @208              0x00000001

Segment Type

ub4 blksz_ech                   @212              0x00002000

blksz

ub4 fbsz_echo                   @216              0x00000000

fbsz

ub4 l2asoffset_ech              @220              0x00001434

L2 Array start offset

ub4 firstbmb3_echo              @224              0x00000000

First Level 3 BMB

ub4 l2hfinsert_ech              @228              0x01400a09

L2 Hint for inserts

ub4 nl2_echo                    @232              0x00000001

nl2

ub4 lastBMB1_echo               @236              0x01401f01

Last Level 1 BMB

ub4 lastBMB2_echo               @240              0x01400a09

Last Level 2 BMB

ub4 lastBMB3_echo               @244              0x00000000

Last Level 3 BMB

ub4 mhnext_echo                 @260              0x00000000

next of Map Header

ub4 mhext_echo                  @264              0x00000012

#extents of Map Header

ub4 mhobj_ech                   @272              0x00015781

obj# of Map Header

ub4 mhflag_ech                  @276              0x10000000

flag of Map Header

struct em(Extent Map)                   @280

Extent Map

ub4 dba_em[0]                   @280              0x01400a08            ub4 len_em[0]                   @284              0x00000008

ub4 dba_em[1]                   @288              0x01400a10            ub4 len_em[1]                   @292              0x00000008

ub4 dba_em[2]                   @296              0x01400a18            ub4 len_em[2]                   @300              0x00000008

ub4 dba_em[3]                   @304              0x01400a20            ub4 len_em[3]                   @308              0x00000008

ub4 dba_em[4]                   @312              0x01400a28            ub4 len_em[4]                   @316              0x00000008

ub4 dba_em[5]                   @320              0x01400a30            ub4 len_em[5]                   @324              0x00000008

ub4 dba_em[6]                   @328              0x01400a38            ub4 len_em[6]                   @332              0x00000008

ub4 dba_em[7]                   @336              0x01400a40            ub4 len_em[7]                   @340              0x00000008

ub4 dba_em[8]                   @344              0x01400a48            ub4 len_em[8]                   @348              0x00000008

ub4 dba_em[9]                   @352              0x01400a50            ub4 len_em[9]                   @356              0x00000008

ub4 dba_em[10]                  @360              0x01400a58            ub4 len_em[10]                  @364              0x00000008

ub4 dba_em[11]                  @368              0x01400a60            ub4 len_em[11]                  @372              0x00000008

ub4 dba_em[12]                  @376              0x01400a68            ub4 len_em[12]                  @380              0x00000008

ub4 dba_em[13]                  @384              0x01400a70            ub4 len_em[13]                  @388              0x00000008

ub4 dba_em[14]                  @392              0x01400a78            ub4 len_em[14]                  @396              0x00000008

ub4 dba_em[15]                  @400              0x01401e00            ub4 len_em[15]                  @404              0x00000008

ub4 dba_em[16]                  @408              0x01401e80            ub4 len_em[16]                  @412              0x00000080

ub4 dba_em[17]                  @416              0x01401f00            ub4 len_em[17]                  @420              0x00000080

struct am(Auxillary Map)                @2736

Auxillary Map

ub4 fdba_am[0]                  @2736             0x01400a08            ub4 datadba_am[0]               @2740             0x01400a0b

ub4 fdba_am[1]                  @2744             0x01400a08            ub4 datadba_am[1]               @2748             0x01400a10

ub4 fdba_am[2]                  @2752             0x01400a18            ub4 datadba_am[2]               @2756             0x01400a19

ub4 fdba_am[3]                  @2760             0x01400a18            ub4 datadba_am[3]               @2764             0x01400a20

ub4 fdba_am[4]                  @2768             0x01400a28            ub4 datadba_am[4]               @2772             0x01400a29

ub4 fdba_am[5]                  @2776             0x01400a28            ub4 datadba_am[5]               @2780             0x01400a30

ub4 fdba_am[6]                  @2784             0x01400a38            ub4 datadba_am[6]               @2788             0x01400a39

ub4 fdba_am[7]                  @2792             0x01400a38            ub4 datadba_am[7]               @2796             0x01400a40

ub4 fdba_am[8]                  @2800             0x01400a48            ub4 datadba_am[8]               @2804             0x01400a49

ub4 fdba_am[9]                  @2808             0x01400a48            ub4 datadba_am[9]               @2812             0x01400a50

ub4 fdba_am[10]                 @2816             0x01400a58            ub4 datadba_am[10]              @2820             0x01400a59

ub4 fdba_am[11]                 @2824             0x01400a58            ub4 datadba_am[11]              @2828             0x01400a60

ub4 fdba_am[12]                 @2832             0x01400a68            ub4 datadba_am[12]              @2836             0x01400a69

ub4 fdba_am[13]                 @2840             0x01400a68            ub4 datadba_am[13]              @2844             0x01400a70

ub4 fdba_am[14]                 @2848             0x01400a78            ub4 datadba_am[14]              @2852             0x01400a79

ub4 fdba_am[15]                 @2856             0x01400a78            ub4 datadba_am[15]              @2860             0x01401e00

ub4 fdba_am[16]                 @2864             0x01401e80            ub4 datadba_am[16]              @2868             0x01401e82

ub4 fdba_am[17]                 @2872             0x01401f00            ub4 datadba_am[17]              @2876             0x01401f02

ub4 slbbdba1_am                 @5192             0x01400a09

Second Level Bitmap block DBAs

六、说明

1、以上内容为个人多次测试结果,由于个人原因,如有分析不足之处还请见谅及指正。

2、文章涉及内容,请勿在生产环境模拟。

勤学如春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏。  --陶渊明

oracle 树状结构一直出现不了_深入解析Oracle ASSM 段头块(PAGETABLE SEGMENT HEADER)结构...相关推荐

  1. 浅谈oracle树状结构层级查询

    oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只要精通数据库那么对于java开发你 ...

  2. 浅谈oracle树状结构层级查询测试数据

    浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只 ...

  3. oracle树状排序,Oracle树状结构查询

    oracle用表的形式组织数据,某些数据还呈现树状结构,提供了对这些数据的组织.查询等功能.在扫描树结构表时,要依次访问树中的每一个节点,并且每个节点只能访问一次,其步骤如下: 1:从根节点开始 2: ...

  4. oracle 树状结构一直出现不了_SEO站内优化:网站结构优化(十一)

    上文已经对搜索引擎排名机制,以及影响关键词排名的因素进行了全面的讲解,详情查阅SEO入门到精通(十):搜索引擎的排名机制.本文主要讲解站内优化中最为重要的"网站结构优化",为什么说 ...

  5. oracle树状结构递归,Oracle:递归查询(树形结构数据)

    Oracle树形结构数据-相关知识总结 Oracle树形结构数据--基本知识 1.数据组成 2.基本查询 2.1.查询某节点及该节点下的所有子孙节点 SELECT   *      FROM QIAN ...

  6. oracle树状结构图,Oracle 树状查询

    在实际应用中,经常利用数据库保存树状结构的数据,通常用一张表中的两个字段表示,一个是自身的ID,一个是保存父类的ID.在这样具有这种关系中的数据,要求查出的数据具有我们想要的树状显示.这里需要引入Or ...

  7. oracle树状结构层级查询小结--connect by等之测试数据

    1.创建表 (dept_id VARCHAR2(32) not null,dept_name VARCHAR2(128),dept_code VARCHAR2(32),par_dept_id VARC ...

  8. 计算机硬件结构中负责识别,计算机硬件基本结构树状图

    <计算机硬件基本结构树状图>由会员分享,可在线阅读,更多相关<计算机硬件基本结构树状图(2页珍藏版)>请在人人文库网上搜索. 1.计算机硬件基本结构计算机的5个基本组成部分:运 ...

  9. HDU - 1556 Color the ball(树状数组)

    N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一 ...

最新文章

  1. C++语言代码检查工具PC-Lint简介
  2. Pretty girl,你一定要去旅行
  3. c语言的输入函数有哪些
  4. 2003 cant connect to MySQL server on 'XXX.XXX.XXX.XXX'
  5. 博士生是学生还是科研工作者?
  6. destoon 自定义session丢失
  7. xml存储数据 优缺点_Python大神都是这样处理xml文件的!
  8. 技术分享|Javascript高级教程学习指南
  9. 美赛 5:评价类模型、插值与拟合模型(十大模型篇)
  10. android 微信登陆功能,Android 实现微信登录详解
  11. 51单片机实训day2——创建Proteus工程以及Proteus基本控件的使用|单片机最小系统电路设计:电源配置 复位电路 晶振电路
  12. python3爬妹子图_python3爬妹子图
  13. c++字符串转换为数字(stoi, stol, stoul, stoull, stof, stod, stold)
  14. matlab cdfx,求助大神
  15. 【整理】Makefile编写规则
  16. css_复合选择器_border_css层叠性与覆盖性_background_多标记构图法_行高_文本修饰属性_超链接的伪类_导航制作_Unit_4;
  17. app被Rejected 的各种原因翻译。这个绝对有用
  18. 基于单片机的电机转速测量系统设计
  19. 微信小程序调用数据库增删改查
  20. web3j采用call方式查询智能合约执行结果

热门文章

  1. c# 解析gprmc数据_Windows下VLP16激光雷达数据解析
  2. win10下装win7双系统_3步安装电脑双系统,win7+win10自由选择进入,你学会了吗?...
  3. 23. which命令
  4. VTK:正态估计用法实战
  5. boost::mpl模块实现range_c相关的测试程序
  6. boost::mp11::mp_map_update_q相关用法的测试程序
  7. boost::hana::extract用法的测试程序
  8. boost::hana::detail::has_duplicates用法的测试程序
  9. boost::hana::zip用法的测试程序
  10. boost::sloan_ordering用法的测试程序