dba_segments表中的header_block与dba_extents表中的blockid问题

dba_segments表中的header_block

SYS>select segment_name,header_file,header_block from dba_segments where segment_name='TEST' and owner='TIM';

SEGMENT_NAME HEADER_FILE HEADER_BLOCK
------------------------------ ---------------- -----------------
TEST 4 579

dba_extents表中的block_id

SYS>select segment_name,file_id,block_id from dba_extents where segment_name='TEST' and owner='TIM';

SEGMENT_NAME FILE_ID BLOCK_ID
------------------------------ ---------- ----------
TEST 4 577
TEST 4 585
TEST 4 593
TEST 4 601

从上面可以看出header_block并不是segment的第一个block

一个segment会有多个extent

一个segment在dba_segments中只有1条记录,只有一个header_block,这是存储segment header信息的那个block

一个segment在dba_extents中可能会有多条记录,每个block_id都是这个extent的起始block id。

一个ASSM的segment最初的那个extent中,block_id标示的block(也就是第一个extent的第一个block)是FIRST LEVEL BITMAP BLOCK,第二个block是SECOND LEVEL BITMAP BLOCK,这两个block用于管理free block,取代freelist的功能,而第三个block才是PAGETABLE SEGMENT HEADER(这才是header_block字段表示的block)。

那第一条记录是从那个块开始的呢?我们可以用下列命令来查看:

TIM>select dbms_rowid.ROWID_BLOCK_NUMBER(rowid) block_id,count(*) from test group by dbms_rowid.ROWID_BLOCK_NUMBER(rowid) order by dbms_rowid.ROWID_BLOCK_NUMBER
(rowid);

BLOCK_ID COUNT(*)
---------- ----------
580 4
581 322
582 323
583 322
584 322
585 322
586 322
587 322
588 322
589 322
590 322

可以看出第一条记录从580块开始。

[@more@]

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

转载于:http://blog.itpub.net/10685580/viewspace-1047165/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值