oracle 树状结构一直出现不了_深入解析Oracle ASSM 段头块(PAGETABLE SEGMENT HEADER)结构...
一、概念介绍
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)结构...相关推荐
- 浅谈oracle树状结构层级查询
oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只要精通数据库那么对于java开发你 ...
- 浅谈oracle树状结构层级查询测试数据
浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只 ...
- oracle树状排序,Oracle树状结构查询
oracle用表的形式组织数据,某些数据还呈现树状结构,提供了对这些数据的组织.查询等功能.在扫描树结构表时,要依次访问树中的每一个节点,并且每个节点只能访问一次,其步骤如下: 1:从根节点开始 2: ...
- oracle 树状结构一直出现不了_SEO站内优化:网站结构优化(十一)
上文已经对搜索引擎排名机制,以及影响关键词排名的因素进行了全面的讲解,详情查阅SEO入门到精通(十):搜索引擎的排名机制.本文主要讲解站内优化中最为重要的"网站结构优化",为什么说 ...
- oracle树状结构递归,Oracle:递归查询(树形结构数据)
Oracle树形结构数据-相关知识总结 Oracle树形结构数据--基本知识 1.数据组成 2.基本查询 2.1.查询某节点及该节点下的所有子孙节点 SELECT * FROM QIAN ...
- oracle树状结构图,Oracle 树状查询
在实际应用中,经常利用数据库保存树状结构的数据,通常用一张表中的两个字段表示,一个是自身的ID,一个是保存父类的ID.在这样具有这种关系中的数据,要求查出的数据具有我们想要的树状显示.这里需要引入Or ...
- oracle树状结构层级查询小结--connect by等之测试数据
1.创建表 (dept_id VARCHAR2(32) not null,dept_name VARCHAR2(128),dept_code VARCHAR2(32),par_dept_id VARC ...
- 计算机硬件结构中负责识别,计算机硬件基本结构树状图
<计算机硬件基本结构树状图>由会员分享,可在线阅读,更多相关<计算机硬件基本结构树状图(2页珍藏版)>请在人人文库网上搜索. 1.计算机硬件基本结构计算机的5个基本组成部分:运 ...
- HDU - 1556 Color the ball(树状数组)
N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一 ...
最新文章
- C++语言代码检查工具PC-Lint简介
- Pretty girl,你一定要去旅行
- c语言的输入函数有哪些
- 2003 cant connect to MySQL server on 'XXX.XXX.XXX.XXX'
- 博士生是学生还是科研工作者?
- destoon 自定义session丢失
- xml存储数据 优缺点_Python大神都是这样处理xml文件的!
- 技术分享|Javascript高级教程学习指南
- 美赛 5:评价类模型、插值与拟合模型(十大模型篇)
- android 微信登陆功能,Android 实现微信登录详解
- 51单片机实训day2——创建Proteus工程以及Proteus基本控件的使用|单片机最小系统电路设计:电源配置 复位电路 晶振电路
- python3爬妹子图_python3爬妹子图
- c++字符串转换为数字(stoi, stol, stoul, stoull, stof, stod, stold)
- matlab cdfx,求助大神
- 【整理】Makefile编写规则
- css_复合选择器_border_css层叠性与覆盖性_background_多标记构图法_行高_文本修饰属性_超链接的伪类_导航制作_Unit_4;
- app被Rejected 的各种原因翻译。这个绝对有用
- 基于单片机的电机转速测量系统设计
- 微信小程序调用数据库增删改查
- web3j采用call方式查询智能合约执行结果
热门文章
- c# 解析gprmc数据_Windows下VLP16激光雷达数据解析
- win10下装win7双系统_3步安装电脑双系统,win7+win10自由选择进入,你学会了吗?...
- 23. which命令
- VTK:正态估计用法实战
- boost::mpl模块实现range_c相关的测试程序
- boost::mp11::mp_map_update_q相关用法的测试程序
- boost::hana::extract用法的测试程序
- boost::hana::detail::has_duplicates用法的测试程序
- boost::hana::zip用法的测试程序
- boost::sloan_ordering用法的测试程序