OracleA M三级位图块结构
文章作者 100test 发表时间 2008:04:02 14:01:57
来源 100Test.Com百考试题网
前几天Piner发布了一个悬赏:寻找ASSM三级位图块的文章,同时给出了对于ASSM结构的猜想。
Piner猜想的结构和我想像的不同,我认为ASSM的结构应该如下图所示:
![](/oracle/Files/2007-11/19/101674541.jpg)
也就是说我认为BMB的结构应该是均衡的,同时段头的PAGETABLE SEGMENT HEADER同时充当了第0个3级位图块的角色。
在PAGETABLE SEGMENT HEADER中实际上我们可以很容易的看到这样的输出:
--------------------------------------------------------
Segment Type: 1 nl2: 103 blksz: 2048 fbsz: 0
L2 Array start offset: 0x00000434
First Level 3 BMB: 0x00000000
L2 Hint for inserts: 0x0355cfad
Last Level 1 BMB: 0x03560c9c
Last Level II BMB: 0x0355cfad
Last Level III BMB: 0x00000000
Map Header:: next 0x034000bf #extents: 51 obj#: 33141 flag: 0x20000000
Extent Map
----------------------------------------------------------------- |
也就是说,这里记录了First Level 3 BMB和Last Level III BMB的地址,那么这就足够了,这里的双向指针完全可以进行Level 3级位图块的导航,而这第0个三级位图块也即段头,并无需记录所有3级位图块的地址。
由于产生另外一个3级位图块并不容易,所以Piner才提出悬赏,他构造了一个873G的大表,仍然没有产生另外的3级位图块:
SQL> 0select bytes/1024/1024/1024 "SIZE(G)" from user_segments where segment_name= TEST .
SIZE(G)
----------
873.25 |