row#0[8044] dba: 16778037=0x1000335
col 0; len 2; (2): c1 02
col 1; len 3; (3): 01 00 03
col 2; TERM
row#1[8031] dba: 16778038=0x1000336
col 0; len 2; (2): c1 02
col 1; len 4; (4): 01 00 03 f8
col 2; TERM
row#2[8019] dba: 16778039=0x1000337
col 0; len 2; (2): c1 03
col 1; len 3; (3): 01 00 04
col 2; TERM
row#3[8006] dba: 16778040=0x1000338
col 0; len 2; (2): c1 03
col 1; len 4; (4): 01 00 04 bf
col 2; TERM
row#4[7998] dba: 16778041=0x1000339
col 0; len 2; (2): c1 04
col 1; TERM
row#5[7985] dba: 16778042=0x100033a
col 0; len 2; (2): c1 04
col 1; len 4; (4): 01 00 05 57
col 2; TERM
row#6[7972] dba: 16778043=0x100033b
col 0; len 2; (2): c1 04
col 1; len 4; (4): 01 00 05 f8
col 2; TERM
这一部分是具体的关于各个叶节点的位置(起始位置的叶节点已经在kdxbrlmc 16778036=0x1000334给出)
其存储方式为COL0 键值+COL1其对应的表中数据块起始的DBA(可能包含BMB LEVEL1块)
但是这里
row#4[7998] dba: 16778041=0x1000339
col 0; len 2; (2): c1 04
col 1; TERM
并未包含实际的表的DBA,为什么未知
Auxillary Map
--------------------------------------------------------
Extent 0 : L1 dba: 0x01000130 Data dba: 0x01000133
Extent 1 : L1 dba: 0x01000130 Data dba: 0x01000138
Extent 2 : L1 dba: 0x01000140 Data dba: 0x01000141
Extent 3 : L1 dba: 0x01000140 Data dba: 0x01000148
Extent 4 : L1 dba: 0x01000150 Data dba: 0x01000151
Extent 5 : L1 dba: 0x01000150 Data dba: 0x01000158
Extent 6 : L1 dba: 0x01000160 Data dba: 0x01000161
Extent 7 : L1 dba: 0x01000160 Data dba: 0x01000168
Extent 8 : L1 dba: 0x01000170 Data dba: 0x01000171
Extent 9 : L1 dba: 0x01000170 Data dba: 0x01000178
Extent 10 : L1 dba: 0x01000300 Data dba: 0x01000301
Extent 11 : L1 dba: 0x01000300 Data dba: 0x01000308
Extent 12 : L1 dba: 0x01000310 Data dba: 0x01000311
Extent 13 : L1 dba: 0x01000310 Data dba: 0x01000318
Extent 14 : L1 dba: 0x01000320 Data dba: 0x01000321
Extent 15 : L1 dba: 0x01000320 Data dba: 0x01000328
Extent 16 : L1 dba: 0x01000380 Data dba: 0x01000382
Extent 17 : L1 dba: 0x01000400 Data dba: 0x01000402
Extent 18 : L1 dba: 0x01000480 Data dba: 0x01000482
Extent 19 : L1 dba: 0x01000500 Data dba: 0x01000502
Extent 20 : L1 dba: 0x01000580 Data dba: 0x01000582
比如:
row#2[8019] dba: 16778039=0x1000337
col 0; len 2; (2): c1 03
col 1; len 3; (3): 01 00 04
根据COL 1 01 00 04 实际是01000400,我们在BMB LEVEL3的dump中可以找到
Extent 17 : L1 dba: 0x01000400 Data dba: 0x01000402
实际上它是一个BMB LEVEL1块,我们可以看他的数据块实际上是0x01000402
可以进行DUMP这个数据块是否是C1 03这个值
SQL> oradebug setmypid
Statement processed.
SQL> oradebug tracefile_name
/ora11g/diag/rdbms/test/test/trace/test_ora_6108.trc
SQL> alter system dump datafile 4 block 1026;
截取第一行
tab 0, row 0, @0x1f89
tl: 15 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 8] 67 61 6f 70 65 6e 67 32
col 1: [ 2] c1 03
tab 0, row 1, @0x1f7a
可以看到这里的col 1确实为C1 03
接下来取出其中一个块进行分析
这里为了更方便的论述,我将数据ID的分布变为123123这样的分布而非连续的分布,这样更能清晰看到位图在分布中的变化。如果为连续,那么会全部是是FF这样的出现,根据DUMP的BITMAP的索引结构我取出其中一个块进行分析如下: