本地管理表空间的bitmap结构测试

创建表空间用于测试:

SQL> create tablespace bitmap_tbs
2 datafile 'e:oracleproduct10.2.0oradatabitmap_tbs.dbf'
3 size 10m
4 uniform size 128k
5 /

表空间已创建。


查询数据文件的文件号:
FILE_NAME FILE_ID
---------- -------------
E:ORACLEPRODUCT10.2.0ORADATABITMAP_TBS.DBF 5


SQL> select file_name,file_id from dba_data_files;

导出第二个块的内容;

SQL> alter system dump datafile 5 block 2;

系统已更改。

File Space Header Block:
Header Control:
RelFno: 5, Unit: 16, Size: 1280, Flag: 1
AutoExtend: NO, Increment: 0, MaxSize: 0
Initial Area: 7, Tail: 1272, First: 0, Free: 79
Deallocation scn: 0.0
Header Opcode:
Save: No Pending Op
End dump data blocks tsn: 10 file#: 5 minblk 2 maxblk 2

解释:RelFno: 5 文件号
Unit: 16 每个extent16个数据块
Size: 1280 此文件一共1280个数据块
Flag: 1 待考查

再来导出第三个块:

SQL> alter system dump datafile 5 block 3;

系统已更改。

*** 2006-04-11 11:20:13.392
Start dump data blocks tsn: 10 file#: 5 minblk 3 maxblk 3
……
File Space Bitmap Block:
BitMap Control:
RelFno: 5, BeginBlock: 9, Flag: 0, First: 0, Free: 63488
0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
……
0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
End dump data blocks tsn: 10 file#: 5 minblk 3 maxblk 3

解释:
RelFno: 5,
BeginBlock: 9 第一个bit对应的数据块号
Flag: 0 0表示permanent文件,1表示temp文件
First: 0 在哪里开始寻找free space
Free: 63488

在此表空间创建一个表:

SQL> create table test
2 tablespace bitmap_tbs
3 as
4 select * from dba_objects
5 /

表已创建。

再导出第三个数据块:

SQL> alter system dump datafile 5 block 3;

系统已更改。

*** 2006-04-11 11:45:44.254
Start dump data blocks tsn: 10 file#: 5 minblk 3 maxblk 3
……
File Space Bitmap Block:
BitMap Control:
RelFno: 5, BeginBlock: 9, Flag: 0, First: 10, Free: 63478
FF03000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
……
0000000000000000 0000000000000000 0000000000000000 0000000000000000
End dump data blocks tsn: 10 file#: 5 minblk 3 maxblk 3


查看一下此表被分配的extent信息:

SQL> select file_id,extent_id,blocks
2 from dba_extents
3 where segment_name='TEST'
4 /

FILE_ID EXTENT_ID BLOCKS
------------ --------------- ------------
5 0 16
5 1 16
5 2 16
5 3 16
5 4 16
5 5 16
5 6 16
5 7 16
5 8 16
5 9 16

已选择10行。


我们看导出文件中的FF03与这里的查询结果的对应关系:

FF经过swap后,还是FF,即1111 1111
03经过swap后,为110000,
组合到一起为1111 1111 11 0000,很明显这是10个1,
表示前10个extent是被占用的,这也与导出文件中的first为10对应。

我们再创建一个表,然后导出第三个数据块:

SQL> create table test2
2 tablespace bitmap_tbs
3 as
4 select * from dba_objects
5 where rownum<5001
6 /

表已创建。

SQL> alter system dump datafile 5 block 3;

系统已更改。

*** 2006-04-11 12:00:04.100
Start dump data blocks tsn: 10 file#: 5 minblk 3 maxblk 3
……
BitMap Control:
RelFno: 5, BeginBlock: 9, Flag: 0, First: 15, Free: 63473
FF7F000000000000 0000000000000000 0000000000000000 0000000000000000
……
0000000000000000 0000000000000000 0000000000000000 0000000000000000
End dump data blocks tsn: 10 file#: 5 minblk 3 maxblk 3

查询一下test2被分配到的extent情况:

SQL> select file_id,extent_id,blocks
2 from dba_extents
3 where segment_name='TEST2' and owner='SYS'
4 /

FILE_ID EXTENT_ID BLOCKS
------------ --------------- ------------
5 0 16
5 1 16
5 2 16
5 3 16
5 4 16

可以看到test2表被分配了5个extent,我们再看刚才所得到的导出文件中的FF7F:
FF经过swap后,是1111 1111,
7F的二进制为111 1111,swap后为1111 1110,
组合到一起,即1111 1111 1111 111,表示前面15个extent被占用。

我们再删除第一个表,

*** 2006-04-11 12:06:15.885
Start dump data blocks tsn: 10 file#: 5 minblk 3 maxblk 3
……
File Space Bitmap Block:
BitMap Control:
RelFno: 5, BeginBlock: 9, Flag: 0, First: 0, Free: 63483
007C000000000000 0000000000000000 0000000000000000 0000000000000000
……
0000000000000000 0000000000000000 0000000000000000 0000000000000000
End dump data blocks tsn: 10 file#: 5 minblk 3 maxblk 3

我们考查007C:00经过swap后为0000 0000,
7c二进制为111 11经过swap后为11111,
表示前8个区free,从第9个到第14个被占用。

我们再删除test2表,这时bitmap表现为全0:

*** 2006-04-11 12:10:59.793
Start dump data blocks tsn: 10 file#: 5 minblk 3 maxblk 3
……
File Space Bitmap Block:
BitMap Control:
RelFno: 5, BeginBlock: 9, Flag: 0, First: 0, Free: 63488
0000000000000000 0000000000000000 0000000000000000 0000000000000000
……
0000000000000000 0000000000000000 0000000000000000 0000000000000000
End dump data blocks tsn: 10 file#: 5 minblk 3 maxblk 3

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/37724/viewspace-152530/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/37724/viewspace-152530/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值