bitmap在本地管理表空间和ASSM
引自:http://space.itpub.net/18771612/viewspace-580412
在学习oracle的时候,和朋友在群中讨论过这样一个问题
bitmap在本地管理中和在ASSM管理中是不是同一个?
当然答案是否定的,不过这个概念的确在前段实践困扰过我。
根据eygle的文章,自己实践证明,加深了理解
先理解一下本地管理中的bitmap
在oracle中,如果我们的表空间是本地管理的话,我们可以发现:
1:在每个datafile的头部有一个bitmap,这个bitmap的大小是由db_block_size而确定,如果db_block_size小于16kb的时候,bitmap为64kDb_block_size 32kb bitmap为128kb
2:bitmap记录的是数据文件中extent的使用情况。
也就是说bitmap本地管理的时候,是在datafile的开头
SQL> select BLOCK_ID,FILE_ID FROM dba_extents where SEGMENT_NAME = 'KING';
BLOCK_ID FILE_ID
---------- ----------
9 7
17 7
25 7
33 7
41 7
49 7
57 7
65 7
73 7
9 rows selected.
可以得之我们的king这个表存放在数据文件号为7的这个数据文件中,它的第一个block_id 为 9
继续。。。。。
SQL> alter system dump datafile 7 block min 1 block max 9;
*** 2009-03-28 00:55:13.625
*** SERVICE NAME:(SYS$USERS) 2009-03-28 00:55:13.562
*** SESSION ID:(154.3) 2009-03-28 00:55:13.562
Start dump data blocks tsn: 9 file#: 7 minblk 1 maxblk 9
Block 1 (file header) not dumped: use dump file header command
buffer tsn: 9 rdba: 0x01c00002 (7/2)
scn: 0x0000.000b6519 seq: 0x02 flg: 0x04 tail: 0x65191d02
frmt: 0x02 chkval: 0x416a type: 0x1d=KTFB Bitmapped File Space Header
File Space Header Block:
Header Control:
RelFno: 7, Unit: 8, Size: 2560, Flag: 9
AutoExtend: YES, Increment: 1280, MaxSize: 4194302
Initial Area: 7, Tail: 2560, First: 9, Free: 310
Header Opcode:
Save: No Pending Op
buffer tsn: 9 rdba: 0x01c00003 (7/3)
scn: 0x0000.000b6519 seq: 0x01 flg: 0x04 tail: 0x65191e01
frmt: 0x02 chkval: 0x4fd9 type: 0x1e=KTFB Bitmapped File Space Bitmap
File Space Bitmap Block:
BitMap Control:
分析跟踪文件
可以看出来 前两个block记录的是文件头信息
而从第三个block开始 是bitmap信息。
继续看第9个block
buffer tsn: 9 rdba: 0x01c00009 (7/9)
First free datablock : 16
0x01c00011 Length: 8 Offset: 8
0:Metadata 1:Metadata 2:Metadata 3:FULL
4:FULL 5:FULL 6:FULL 7:FULL
8:FULL 9:FULL 10:FULL 11:FULL
12:FULL 13:FULL 14:FULL 15:FULL
可以看出来这个block是ASSM的bitmap
所有这两个bitmap是完全不同的概念
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/276487/viewspace-673007/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/276487/viewspace-673007/