Oracle Block Extent Segment Tablespace

Oracle Block Extent Segment Tablespace的测试

1,Extent管理中出现的问题
当正常使用默认参数建立tablespace,table后,我们可以看见extent的block_id是从9号块开始.因为默认的db_block_size = 8192byte时,数据文件的第1-8个快作为保留,其中1,2作为数据文件头信息,3-8记录extent的位图信息,即记录extent的使用与否.

问题1:如下,出现起始的block_id为137,与大部分的起始block_id为9不相符.为什么?

31-MAR-12 HR @ hdb>select segment_name,tablespace_name,FILE_ID,EXTENT_ID,BLOCK_ID,BLOCKS from dba_extents where tablespace_name = 'TSMGMT_TS1';

SEGMENT_NAME         TABLESPACE_NAME                   FILE_ID  EXTENT_ID  BLOCK_ID     BLOCKS
-------------------- ------------------------------ ---------- ---------- ---------- ----------
MGMT_TS1             TSMGMT_TS1                             13          0       137        128

创建脚本如下

31-MAR-12 SYS @ hdb>

create tablespace tsmgmt_ts1
datafile '/u01/app/oracle/oradata/hdb/tsmgmt_ts1.ora'
size 10M
extent management local uniform;/*这里默认为(size 1024K)*/

31-MAR-12 SYS @ hdb>create TABLE MGMT_TS1(id number,times date) tablespace TSMGMT_TS1;

 

问题2:空表占用了2个extent,为什么?

另外从dump出来的文件来看,该文件已经使用了2个extent
31-MAR-12 SYS @ hdb>alter session set events 'immediate trace name file_hdrs level 10';/*收集tsmgmt_ts1的头部信息*/
31-MAR-12 SYS @ hdb>alter system dump datafile 13 block min 1 block max 3; /*tsmgmt_ts1为13号文件,收集extent位图信息*/
31-MAR-12 SYS @ hdb>@gettrcname.sql
TRACE_FILE
--------------------------------------------------------------------------------
/u01/app/oracle/admin/hdb/udump/hdb_ora_5557.trc

查看/u01/app/oracle/admin/hdb/udump/hdb_ora_5557.trc,可以发现03表示1,2个extent在使用中;但事实上,正常情形中只有1个extent在使用.
RelFno: 13, BeginBlock: 9, Flag: 0, First: 2, Free: 63486
0300000000000000 0000000000000000 0000000000000000 0000000000000000


验证:经过验证对问题1,2有如下发现.

当将一个表删除,再重新创建一个同名的表时,会出现起始extent的block增加一个uniform size大小的block数(比如128).即出现
第一次创建表,block_id 9
第二次创建表,block_id 137(9+128)
第三次创建表,block_id 265(137+128)

这里block_id为137,也就是说,mgmt_ts1创建了2次.

 

以下验证第3次创建.

31-MAR-12 HR @ hdb>drop table mgmt_ts1;
Table dropped.
31-MAR-12 HR @ hdb>select segment_name,tablespace_name,FILE_ID,EXTENT_ID,BLOCK_ID,BLOCKS from dba_extents where tablespace_name = 'TSMGMT_TS1';
no rows selected
31-MAR-12 HR @ hdb>create TABLE MGMT_TS1(id number,times date) tablespace TSMGMT_TS1;
Table created.
31-MAR-12 HR @ hdb>select segment_name,tablespace_name,FILE_ID,EXTENT_ID,BLOCK_ID,BLOCKS from dba_extents where tablespace_name = 'TSMGMT_TS1';
SEGMENT_NAME         TABLESPACE_NAME                   FILE_ID  EXTENT_ID  BLOCK_ID     BLOCKS
-------------------- ------------------------------ ---------- ---------- ---------- ----------
MGMT_TS1             TSMGMT_TS1                             13          0        265        128

31-MAR-12 SYS @ hdb>alter system dump datafile 13 block min 1 block max 3;
System altered.
31-MAR-12 SYS @ hdb>@gettrcname
TRACE_FILE
--------------------------------------------------------------------------------
/u01/app/oracle/admin/hdb/udump/hdb_ora_14941.trc

查看/u01/app/oracle/admin/hdb/udump/hdb_ora_14941.trc,空表已经占用了3个extent

RelFno: 13, BeginBlock: 9, Flag: 0, First: 3, Free: 63485
0700000000000000 0000000000000000 0000000000000000 0000000000000000

 

2, Segment与block的管理(以块大小为8K的默认为例)

(1), 前面对数据库进行了转储,结论是数据文件的0-7号块(即前8个block)系统保留了起来;
对于这种默认8192 type块大小的表空间数据文件的前8个块,1,2 block用来记录数据文件头的信息,3至8号的block用于记录extent的位图信息.
1,2 block数据文件头信息,一般主要是数据库的SCN信息,代表数据库的一种一致性状态记录;
3-8 block为所有对象的extent使用状态(used,free)分布信息.

(2), 从第9块开始,开始记录数据,主要包含:1,2,3级位图信息(但一般第2个3级位图块很难出现,段头信息其实就是第1个3级为位图块),数据块,位图块以指针的方式使用.
1级位图块直接管理数据块的block,一个1级位图块能够管理多少数据块,取决于分区的blocks数量,也就是extent的uniform size(eg.128K)/8K;第1个1级位图块,出现在第9块.

当extent不断增加,会出现多个1级位图块,分别管理每个extent,此时这些1级位图块,也是需要进行管理的,此时就出现了2级位图块.第1个1级位图块后出现第1个2级位图块,为第10块.这里是以新建的表空间为例进行分析.

当多个2级位图块出现后就也需要对2级位图块进行管理,而管理2级位图块的就是3级位图块,其实默认的3级位图块也就是段头块;当2级位图块的数量一直增加,段头块无法全部管理到所有的2级位图块时,就会出现第2个3级位图块,也就是真正意义上的3级位图块,实质上3级位图块一般很少出现,因为数据量和默认的块大小的关系,一般很难出现这中3级位图块;段头块(第1个3级位图块)一般紧接着出现在第1个2级位图块的后面,也就是第11块.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值