- 最后登录
- 2023-8-16
- 在线时间
- 1686 小时
- 威望
- 2135
- 金钱
- 50532
- 注册时间
- 2011-10-12
- 阅读权限
- 200
- 帖子
- 5207
- 精华
- 39
- 积分
- 2135
- UID
- 2
|
2#
发表于 2012-5-6 22:25:53
ODM DATA:
BBED> set block 200
BLOCK# 200
BBED> map /v
File: /s01/lost1.dbf (0)
Block: 200 Dba:0x00000000
------------------------------------------------------------
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, 96 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[3], 72 bytes @44
struct kdbh, 14 bytes @124
ub1 kdbhflag @124
b1 kdbhntab @125
b2 kdbhnrow @126
sb2 kdbhfrre @128
sb2 kdbhfsbo @130
sb2 kdbhfseo @132
b2 kdbhavsp @134
b2 kdbhtosp @136
struct kdbt[1], 4 bytes @138
b2 kdbtoffs @138
b2 kdbtnrow @140
sb2 kdbr[70] @142
ub1 freespace[905] @282
ub1 rowdata[7001] @1187
ub4 tailchk @8188
1. "Some parts of the block overhead are fixed in size "
以下部分的长度 在block 结构中是固定的大小的。
kcbh ==> block header structure 块头结构包括 block type、format等信息 kcbh的大小固定为20bytes
kdbh ==> data header structure 数据头结构 包括kdbhnrow、freespace等信息 固定为 14bytes
ktbbh ==> ktbbh排除 ktbbhitl ITL结构的部分是固定的 24bytes
tailchk ==> Tailchk: 保存在块结尾用于校验的数据,长度4个字节,内部结构名tailchk。
2.“row directory占用data block的大小比例是固定的吗?“
不是 。
kdbr ==> Row Directory
一个kdbr 结构占用2个字节 ,记录了 一条row piece 的offset , ROW directory 占用的比例等于 2 * kdbhnrow/ block_size
sb2 kdbr[83] @142
BBED> p kdbhnrow
b2 kdbhnrow @126 83
kdbhnrow ==> Number of rows
BBED> p *kdbr[0]
rowdata[6915]
-------------
ub1 rowdata[6915] @8100 0x2c
BBED> x /r offset 8100
rowdata[6915] @8100
-------------
flag@8100: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8101: 0x00
cols@8102: 13
col 0[3] @8103: 0x53 0x59 0x53
col 1[21] @8107: 0x4b 0x55 0x24 0x5f 0x50 0x52 0x4f 0x58 0x59 0x5f
0x52 0x4f 0x4c 0x45 0x5f 0x4c 0x49 0x53 0x54 0x5f 0x54
col 2[0] @8129: *NULL*
col 3[3] @8130: 0xc2 0x46 0x38
col 4[0] @8134: *NULL*
col 5[4] @8135: 0x54 0x59 0x50 0x45
col 6[7] @8140: 0x78 0x6e 0x04 0x14 0x09 0x1c 0x14
col 7[7] @8148: 0x78 0x6e 0x04 0x14 0x09 0x1c 0x14
col 8[19] @8156: 0x32 0x30 0x31 0x30 0x2d 0x30 0x34 0x2d 0x32 0x30
0x3a 0x30 0x38 0x3a 0x32 0x37 0x3a 0x31 0x39
col 9[5] @8176: 0x56 0x41 0x4c 0x49 0x44
col 10[1] @8182: 0x4e
col 11[1] @8184: 0x4e
col 12[1] @8186: 0x4e
BBED> p *kdbr[1]
rowdata[6829]
-------------
ub1 rowdata[6829] @8014 0x2c
BBED> x /r offset 8014
rowdata[6829] @8014
-------------
flag@8014: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8015: 0x00
cols@8016: 13
col 0[3] @8017: 0x53 0x59 0x53
col 1[19] @8021: 0x53 0x59 0x53 0x5f 0x59 0x4f 0x49 0x44 0x30 0x30
0x30 0x30 0x30 0x30 0x36 0x39 0x35 0x36 0x24
col 2[0] @8041: *NULL*
col 3[3] @8042: 0xc2 0x46 0x3a
col 4[0] @8046: *NULL*
col 5[4] @8047: 0x54 0x59 0x50 0x45
col 6[7] @8052: 0x78 0x6e 0x04 0x14 0x09 0x1c 0x14
col 7[7] @8060: 0x78 0x6e 0x04 0x14 0x09 0x1c 0x14
col 8[19] @8068: 0x32 0x30 0x31 0x30 0x2d 0x30 0x34 0x2d 0x32 0x30
0x3a 0x30 0x38 0x3a 0x32 0x37 0x3a 0x31 0x39
col 9[5] @8088: 0x56 0x41 0x4c 0x49 0x44
col 10[1] @8094: 0x4e
col 11[1] @8096: 0x4e
col 12[1] @8098: 0x4e |
|