一、概念介绍
L1 BMB中存储了一组连续的同一个extent中的数据块空间使用信息,L1内部结构由Cache Header、Header Control及DBA range三层结构组成,Oracle数据块类型代码为“type: 0x20=FIRST LEVEL BITMAPBLOCK”,和L3、L2相同bbed工具同样不支持查询L1的物理结构,本节主要使用C语言解析L1物理结构。
Level 1Bitmap Block特点:
L1中存储了一组连续的同一个extent中的数据块空间使用信息。
更高性能的空间重组及extent移动。
每个L1可以指向最小16个到最多1024个数据块。
更高性能的segment重组和dml支持。
二、dump块结构解析
altersession set tracefile_identifier='orastar_bmb1';
oradebugsetmypid
altersystem dump datafile 5 block 7704;
oradebugclose_trace
oradebugtracefile_name
CacheHeader:
type: 0x20=FIRST LEVEL BITMAP BLOCK该数据块为L1 BMB
HeaderControl:
nranges:指向数据块extent的个数。
parent dba:你节点L2 dba地址
unformatted:未格式化数据块的数量
total:总数据块的数量
first useful block: 当前inserts操作的数据块offset
owning instance:关联实例
Freeness Status:统计块使用状态
nf1 represents 0–25% free block count,
nf2 represents 25 – 50% free block count,
nf3 represents 50–75% free block count and
nf4 represents 75–100% free block count
first free datablock:下次insert操作的数据块offset
objd: 表示对象object_id
DBArange:
extent开始地址
区大小block数
对L1 地址的offset
三、二进制结构
Cache Header:
Header Control:
DBA range:
四、数据块解析
由于bbed不支持L1数据块的物理结构解析,报错信息如下所示,
BBED>set dba 5,7704
DBA 0x01401e18(20979224 5,7704)
BBED>map v
File: oradata/epmsn/hsql01.dbf (5)
Block: 7704 Dba:0x01401e18
------------------------------------------------------------
BBED-00400:invalid blocktype (32)
使用C语言结构体解析该数据块结构,解析后的物理结构如下所示,
五、说明
1、以上内容为个人多次测试结果,由于个人原因,如有分析不足之处还请见谅及指正。
2、文章涉及内容,请勿的生产环境模拟。
见贤思齐焉,见不贤而内自省也。 --《论语·里仁》