几天Piner发布了一个悬赏:寻找ASSM三级位图块的文章,同时给出了对于ASSM结构的猜想。
Piner猜想的结构和我想像的不同,我认为ASSM的结构应该如下图所示:
也就是说我认为BMB的结构应该是均衡的,同时段头的PAGETABLE SEGMENT HEADER同时充当了第0个3级位图块的角色。
在PAGETABLE SEGMENT HEADER中实际上我们可以很容易的看到这样的输出:--------------------------------------------------------Segment Type: 1 nl2: 103 blksz: 2048 fbsz: 0 L2 Array start offset: 0x00000434First Level 3 BMB: 0x00000000L2 Hint for inserts: 0x0355cfadLast Level 1 BMB: 0x03560c9cLast Level II BMB: 0x0355cfadLast Level III BMB: 0x00000000Map Header:: next 0x034000bf #extents: 51 obj#: 33141 flag: 0x20000000Extent Map-----------------------------------------------------------------
也就是说,这里记录了First Level 3 BMB和Last Level III BMB的地址,那么这就足够了,这里的双向指针完全可以进行Level 3级位图块的导航,而这第0个三级位图块也即段头,并无需记录所有3级位图块的地址。
由于产生另外一个3级位图块并不容易,所以Piner才提出悬赏,他构造了一个873G的大表,仍然没有产生另外的3级位图块:SQL> select bytes/1024/1024/1024 "SIZE(G)" from user_segments where segment_name='TEST'; SIZE(G) ---------- 873。
25。
全部