首页
论坛
门户
空间
手机版
IXPUB
插件
收藏
设置
注册
登录
商店
搜索
培训
Wiki
Blog
归档
丛书
退出
ITPUB论坛
»
Oracle专题深入讨论
» 倾力大奉献——ASSM内部存储研究大揭密
‹‹ 上一主题
|
下一主题 ››
59
1/6
1
2
3
4
5
6
››
投票
交易
悬赏
活动
电梯
|
好评
|
打印
|
推荐
|
订阅
|
收藏
标题:
[精华]
倾力大奉献——ASSM内部存储研究大揭密
piner
that's life
精华贴数 15
个人空间
0
技术积分 63160 (8)
社区积分 1695 (690)
注册日期 2003-2-24
论坛徽章:38
#1
使用道具
发表于 2003-8-22 16:09
倾力大奉献——ASSM内部存储研究大揭密
前言
因为ASSM的官方文档很少,经过多次的查证之后,终于弄明白了ASSM管理(BMB段管理)的内部机理,现在发表给大家共享,此文版权所有,严禁转载!!!!!!
因为资料有限,如果有错误,请大家指正
===========================================
Fenng:有兴趣者请加入讨论."顶","Up"之类的帖子
请尽量少加,
很影响阅读效果,多谢!
__________________
if not now,when?if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎访问Taobao dba团队Blog www.taobaodba.com
热烈庆祝新书出版,欢迎购买
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
piner
that's life
精华贴数 15
个人空间
0
技术积分 63160 (8)
社区积分 1695 (690)
注册日期 2003-2-24
论坛徽章:38
#2
使用道具
发表于 2003-8-22 16:10
为了进一步让大家明白ASSM,先说明ASSM的基本情况!
-----------------------------------------------------------------------------------------------------
在920以前,表的剩余空间的管理与分配都是由链接列表freelist来完成的,因为freelist存在串行的问题因此容易引起往往容易引起段头的争用与空间的浪费(其实这一点并不明显),最主要的还是因为需要DBA 花费大量的精力去管理这些争用并监控表的空间利用。
自动段空间管理(ASSM),它首次出现在Oracle920里。有了ASSM,链接列表freelist被位图所取代,它是一个二进制的数组,能够迅速有效地管理存储扩展和剩余区块(free block),因此能够改善分段存储本质,ASSM表空间上创建的段还有另外一个称呼叫Bitmap Managed Segments(BMB 段)。
让我们看看位图freelist是如何实现的。我会从使用区段空间管理自动参数创建tablespace开始:
create tablespace demo
datafile '/ora01/oem/demo01.dbf '
size 5m
EXTENT MANAGEMENT LOCAL -- Turn on LMT
SEGMENT SPACE MANAGEMENT AUTO -- Turn on ASSM;
一旦你定义好了tablespace,那么表和索引就能够使用各种方法很容易地被移动到新的tablespace里,带有ASSM的本地管理tablespace会略掉任何为PCTUSED、NEXT和FREELISTS所指定的值。
当表格或者索引被分配到这个tablespace以后,用于独立对象的PCTUSED的值会被忽略,而Oracle9i会使用位图数组来自动地管理tablespace里表格和索引的freelist。对于在LMT的tablespace内部创建的表格和索引而言,这个NEXT扩展子句是过时的,因为由本地管理的tablespace会管理它们。但是,INITIAL参数仍然是需要的,因为Oracle不可能提前知道初始表格加载的大小。对于ASSM而言,INITIAL最小的值是三个块。
新的管理机制用位图来跟踪或管理每个分配到对象的块,每个块有多少剩余空间根据位图的状态来确定,如>75%,50%-75%,25%-50%和<25%,也就是说位图其实采用了四个状态位来代替以前的pctused,什么时候该利用该数据块则由设定的pctfree来确定。
使用ASSM的一个巨大优势是,位图freelist肯定能够减轻缓冲区忙等待(buffer busy wait)的负担,这个问题在Oracle9i以前的版本里曾是一个严重的问题
在没有多个freelist的时候,每个Oracle表格和索引在表格的头部都曾有一个数据块,用来管理对象所使用的剩余区块,并为任何SQL插入声明所创建的新数据行提供数据块。当数据缓冲内的数据块由于被另一个DML事务处理锁定而无法使用的时候,缓冲区忙等待就会发生。当你需要将多个任务插入到同一个表格里的时候,这些任务就被强制等待,而同时Oracle会在同时分派剩余的区块,一次一个。
有了ASSM之后,Oracle宣称显著地提高了DML并发操作的性能,因为(同一个)位图的不同部分可以被同时使用,这样就消除了寻找剩余空间的串行化。根据Oracle的测试结果,使用位图freelist会消除所有分段头部(对资源)的争夺,还能获得超快的并发插入操作
尽管ASSM显示出了令人激动的特性并能够简化Oracle DBA的工作,但是Oracle9i的位图分段管理还是有一些局限性的:
· 一旦DBA被分配之后,它就无法控制tablespace内部的独立表格和索引的存储行为。
· 大型对象不能够使用ASSM,而且必须为包含有LOB数据类型的表格创建分离的tablespace。
· 你不能够使用ASSM创建临时的tablespace。这是由排序时临时分段的短暂特性所决定的。
· 只有本地管理的tablespace才能够使用位图分段管理。
· 使用超高容量的DML(例如INSERT、UPDATE和DELETE等)的时候可能会出现性能上的问题。
__________________
if not now,when?if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎访问Taobao dba团队Blog www.taobaodba.com
热烈庆祝新书出版,欢迎购买
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
piner
that's life
精华贴数 15
个人空间
0
技术积分 63160 (8)
社区积分 1695 (690)
注册日期 2003-2-24
论坛徽章:38
#3
使用道具
发表于 2003-8-22 16:12
ASSM到底是怎么回事,表是怎么结构的呢?
----------------------------------------------------------------------------------
关键字:ASSM,自动段管理
BMB Segment 位图段管理
都是一样的概念
1、我们先创建一个本地管理的表空间,采用段自动管理方式
create tablespace demo
datafile '/ora01/oem/demo01.dbf '
size 50m
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
2、创建同样一个表
SQL> create table demotab ( x number ) tablespace demo
storage (initial 1000K);
Table created
SQL> select t.table_name,t.initial_extent,t.next_extent,t.pct_free,t.pct_used from user_tables t where t.table_name = 'DEMOTAB';
TABLE_NAME INITIAL_EXTENT NEXT_EXTENT PCT_FREE PCT_USED
------------------------------ -------------- ----------- ---------- ----------
DEMOTAB 1024000 10
可以看到,NEXT_EXTENT与PCT_USED都为空。
3、执行该过程,检查表的初始状态
SQL> exec show_space('demotab');
Total Blocks............................128
Total Bytes.............................1048576
Unused Blocks...........................125
Unused Bytes............................1024000
Last Used Ext FileId....................7
Last Used Ext BlockId...................8
Last Used Block.........................3
从这里我们能看到一些该表的特性,其中最引人注意的就是表头了,占用了三个块的大小。
另外一个注意的地方就是该表从第8个块开始,但是实际上这里是错误的,应当是从第9个块开始,文件头占用了64K的空间等于8个块。
我们从dba_extent中也能看到这样的信息,实际上是从第9个块开始的。
SQL> select t.segment_name,t.extent_id,t.block_id from dba_extents t where t.segment_name = 'DEMOTAB';
SEGMENT_NAME EXTENT_ID BLOCK_ID
-------------------------------------------------------------------------------- ---------- ----------
DEMOTAB 0 9
DEMOTAB 1 17
……
4、我直接开始分析第9,10,11个块(段头)
SQL> alter system dump datafile 7 block 9;
System altered
SQL> alter system dump datafile 7 block 10;
System altered
SQL> alter system dump datafile 7 block 11;
System altered
Start dump data blocks tsn: 6 file#: 7 minblk 9 maxblk 9
buffer tsn: 6 rdba: 0x06800009 (7/9)
scn: 0x0000.00181a2c seq: 0x01 flg: 0x04 tail: 0x1a2c2001
frmt: 0x02 chkval: 0x30a6 type: 0x20=FIRST LEVEL BITMAP BLOCK
Dump of First Level Bitmap Block
--------------------------------
nbits : 4 nranges: 2 parent dba: 0x0680000a poffset: 0
unformatted: 13 total: 16 first useful block: 3
owning instance : 1
instance ownership changed at
Last successful Search
Freeness Status: nf1 0 nf2 0 nf3 0 nf4 0
Extent Map Block Offset: 4294967295
First free datablock : 3
Bitmap block lock opcode 0
Locker xid: : 0x0000.000.00000000
Highwater:: 0x0680000c ext#: 0 blk#: 3 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0
HWM Flag: HWM Set
--------------------------------------------------------
DBA Ranges :
--------------------------------------------------------
0x06800009 Length: 8 Offset: 0
0x06800011 Length: 8 Offset: 8
0:Metadata 1:Metadata 2:Metadata 3:unformatted
4:unformatted 5:unformatted 6:unformatted 7:unformatted
8:unformatted 9:unformatted 10:unformatted 11:unformatted
12:unformatted 13:unformatted 14:unformatted 15:unformatted
--------------------------------------------------------
End dump data blocks tsn: 6 file#: 7 minblk 9 maxblk 9
Start dump data blocks tsn: 6 file#: 7 minblk 10 maxblk 10
buffer tsn: 6 rdba: 0x0680000a (7/10)
scn: 0x0000.00181a39 seq: 0x01 flg: 0x04 tail: 0x1a392101
frmt: 0x02 chkval: 0x2738 type: 0x21=SECOND LEVEL BITMAP BLOCK
Dump of Second Level Bitmap Block
number: 8 nfree: 8 ffree: 0 pdba: 0x0680000b
opcode:0
xid:
L1 Ranges :
--------------------------------------------------------
0x06800009 Free: 5 Inst: 1
0x06800019 Free: 5 Inst: 1
0x06800029 Free: 5 Inst: 1
0x06800039 Free: 5 Inst: 1
0x06800049 Free: 5 Inst: 1
0x06800059 Free: 5 Inst: 1
0x06800069 Free: 5 Inst: 1
0x06800079 Free: 5 Inst: 1
--------------------------------------------------------
End dump data blocks tsn: 6 file#: 7 minblk 10 maxblk 10
Start dump data blocks tsn: 6 file#: 7 minblk 11 maxblk 11
buffer tsn: 6 rdba: 0x0680000b (7/11)
scn: 0x0000.00181a3d seq: 0x01 flg: 0x04 tail: 0x1a3d2301
frmt: 0x02 chkval: 0x4904 type: 0x23=PAGETABLE SEGMENT HEADER
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 16 #blocks: 128
last map 0x00000000 #maps: 0 offset: 2716
Highwater:: 0x0680000c ext#: 0 blk#: 3 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0
Unlocked
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0x0680000c ext#: 0 blk#: 3 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0
Level 1 BMB for High HWM block: 0x06800009
Level 1 BMB for Low HWM block: 0x06800009
--------------------------------------------------------
Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0
L2 Array start offset: 0x00001434
First Level 3 BMB: 0x00000000
L2 Hint for inserts: 0x0680000a
Last Level 1 BMB: 0x06800079
Last Level II BMB: 0x0680000a
Last Level III BMB: 0x00000000
Map Header:: next 0x00000000 #extents: 16 obj#: 29929 flag: 0x20000000
Extent Map
-----------------------------------------------------------------
0x06800009 length: 8
0x06800011 length: 8
0x06800019 length: 8
0x06800021 length: 8
0x06800029 length: 8
0x06800031 length: 8
0x06800039 length: 8
0x06800041 length: 8
0x06800049 length: 8
0x06800051 length: 8
0x06800059 length: 8
0x06800061 length: 8
0x06800069 length: 8
0x06800071 length: 8
0x06800079 length: 8
0x06800081 length: 8
Auxillary Map
--------------------------------------------------------
Extent 0 : L1 dba: 0x06800009 Data dba: 0x0680000c
Extent 1 : L1 dba: 0x06800009 Data dba: 0x06800011
Extent 2 : L1 dba: 0x06800019 Data dba: 0x0680001a
Extent 3 : L1 dba: 0x06800019 Data dba: 0x06800021
Extent 4 : L1 dba: 0x06800029 Data dba: 0x0680002a
Extent 5 : L1 dba: 0x06800029 Data dba: 0x06800031
Extent 6 : L1 dba: 0x06800039 Data dba: 0x0680003a
Extent 7 : L1 dba: 0x06800039 Data dba: 0x06800041
Extent 8 : L1 dba: 0x06800049 Data dba: 0x0680004a
Extent 9 : L1 dba: 0x06800049 Data dba: 0x06800051
Extent 10 : L1 dba: 0x06800059 Data dba: 0x0680005a
Extent 11 : L1 dba: 0x06800059 Data dba: 0x06800061
Extent 12 : L1 dba: 0x06800069 Data dba: 0x0680006a
Extent 13 : L1 dba: 0x06800069 Data dba: 0x06800071
Extent 14 : L1 dba: 0x06800079 Data dba: 0x0680007a
Extent 15 : L1 dba: 0x06800079 Data dba: 0x06800081
--------------------------------------------------------
Second Level Bitmap block DBAs
--------------------------------------------------------
DBA 1: 0x0680000a
End dump data blocks tsn: 6 file#: 7 minblk 11 maxblk 11
从这里,我们能获得什么信息?
这个是很重要的。
分析块9,这个块叫FIRST LEVEL BITMAP BLOCK。我们可以看到,这里保留了16个块的信息(注意,不是16个区间的信息),也就是说,这个段头块,它记录的是块的使用信息,开始16个块中间有3个块是段头(Metadata,再一次证明也3个段头的保留),不能被使用,其它的都是未使用的块(unformatted)还有13个。
问题?为什么这里只保留16个块的信息呢?这需要我们进一步研究(往下看)
分析块10,叫SECOND LEVEL BITMAP BLOCK。这个就比较有意思了,记录了可能出现的类似于块9的块出现的地址(DBA)。刚才在上面不是说了吗,块9只能记录16个块的信息,那16个块之后的信息怎么办?BMB段采用了分布的策略,在第25个块的地方,oracle将增加一个新的块用来记录下16个块(等会儿看测试),那么块10记录的就是这些块的地址了,如:
0x06800019 Free: 5 Inst: 1 代表下一个块的地址是19(十六进制),其实是就是十进制的25。那么我们想象,再下一个是25+16=41。应当是十六进制的29,再查看块10的内容,大家可以知道这个块的作用了吧
再看块11,这里就是区间地图了,这里主要记录了表的16个区间的分布地址。可以看到其实在ASSM的表里面,取消了原来的freelist(全部放在段头),其实增加了很多块来管理块的数据,这些块不再分布在块的头部,而是分布在表的内部,每隔16个块(这个数目与不同的环境可能有差别),就有一个块来记录下16个块的数据保留的情况。
__________________
if not now,when?if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎访问Taobao dba团队Blog www.taobaodba.com
热烈庆祝新书出版,欢迎购买
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
piner
that's life
精华贴数 15
个人空间
0
技术积分 63160 (8)
社区积分 1695 (690)
注册日期 2003-2-24
论坛徽章:38
#4
使用道具
发表于 2003-8-22 16:14
好,到这里了,我们开始插入数据,进一步说明情况。
SQL>insert into demotab
select rownum from dba_objects;
28985 rows inserted;
然后我们运行
SQL> exec show_space('demotab');
Total Blocks............................128
Total Bytes.............................1048576
Unused Blocks...........................72
Unused Bytes............................589824
Last Used Ext FileId....................26
Last Used Ext BlockId...................56
Last Used Block.........................8
这里有一个新的过程,用于专门分析自动段管理的段中的块的组成
declare
v_unformatted_blocks number;
v_unformatted_bytes number;
v_fs1_blocks number;
v_fs1_bytes number;
v_fs2_blocks number;
v_fs2_bytes number;
v_fs3_blocks number;
v_fs3_bytes number;
v_fs4_blocks number;
v_fs4_bytes number;
v_full_blocks number;
v_full_bytes number;
begin
dbms_space.space_usage ('SYS', 'DEMOTAB', 'TABLE', v_unformatted_blocks,
v_unformatted_bytes, v_fs1_blocks, v_fs1_bytes, v_fs2_blocks, v_fs2_bytes,
v_fs3_blocks, v_fs3_bytes, v_fs4_blocks, v_fs4_bytes, v_full_blocks, v_full_bytes);
dbms_output.put_line('Unformatted Blocks = '||v_unformatted_blocks);
dbms_output.put_line('FS1 Blocks = '||v_fs1_blocks);
dbms_output.put_line('FS2 Blocks = '||v_fs2_blocks);
dbms_output.put_line('FS3 Blocks = '||v_fs3_blocks);
dbms_output.put_line('FS4 Blocks = '||v_fs4_blocks);
dbms_output.put_line('Full Blocks = '||v_full_blocks);
end;/
Unformatted Blocks = 0
FS1 Blocks = 1
FS2 Blocks = 0
FS3 Blocks = 0
FS4 Blocks = 6
Full Blocks = 43
PL/SQL procedure successfully completed
在这里
FS1表示0-25%空闲空间的块
FS2表示25-50%空闲空间的块
FS3表示50-75%空闲空间的块
FS4表示 75-100%空闲空间的块
这里我们能看到什么呢?
可以看到的是,
Total Blocks............................128
Unused Blocks...........................72
就是说,我们这次插入用了56个块。
但是看下面的数据,也就是数据块只有1+6+43=50个,还有6个的差别在哪里呢?我们已知的就是段头有3个,那还有3个应当就是分布在表中的位图块了(假定)。我们进一步分析。
用了56个块,其实就是7个区间,7个区间,每个位图块只能管理16个块(2个区间),这里应当用到了4个位图块才能够管理过来,4个中有一个属于段头的3个,那正好是50+3+3=56了。我们进一步分析。
再看那段头变成什么样了?
Start dump data blocks tsn: 6 file#: 7 minblk 9 maxblk 9
buffer tsn: 6 rdba: 0x06800009 (7/9)
scn: 0x0000.0018b7ca seq: 0x2d flg: 0x00 tail: 0xb7ca202d
frmt: 0x02 chkval: 0x0000 type: 0x20=FIRST LEVEL BITMAP BLOCK
Dump of First Level Bitmap Block
--------------------------------
nbits : 4 nranges: 2 parent dba: 0x0680000a poffset: 0
unformatted: 0 total: 16 first useful block: 3
owning instance : 1
instance ownership changed at 08/19/2003 10:41:42
Last successful Search 08/19/2003 10:41:42
Freeness Status: nf1 0 nf2 0 nf3 0 nf4 0
Extent Map Block Offset: 4294967295
First free datablock : 16
Bitmap block lock opcode 0
Locker xid: : 0x0000.000.00000000
Highwater:: 0x00000000 ext#: 0 blk#: 0 ext size: 0
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0
HWM Flag: Not Set
--------------------------------------------------------
DBA Ranges :
--------------------------------------------------------
0x06800009 Length: 8 Offset: 0
0x06800011 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
--------------------------------------------------------
End dump data blocks tsn: 6 file#: 7 minblk 9 maxblk 9
*** 2003-08-19 11:10:10.000
Start dump data blocks tsn: 6 file#: 7 minblk 10 maxblk 10
buffer tsn: 6 rdba: 0x0680000a (7/10)
scn: 0x0000.0018b7cb seq: 0x07 flg: 0x00 tail: 0xb7cb2107
frmt: 0x02 chkval: 0x0000 type: 0x21=SECOND LEVEL BITMAP BLOCK
Dump of Second Level Bitmap Block
number: 8 nfree: 5 ffree: 3 pdba: 0x0680000b
opcode:0
xid:
L1 Ranges :
--------------------------------------------------------
0x06800009 Free: 1 Inst: 1
0x06800019 Free: 1 Inst: 1
0x06800029 Free: 1 Inst: 1
0x06800039 Free: 5 Inst: 1
0x06800049 Free: 5 Inst: 1
0x06800059 Free: 5 Inst: 1
0x06800069 Free: 5 Inst: 1
0x06800079 Free: 5 Inst: 1
--------------------------------------------------------
End dump data blocks tsn: 6 file#: 7 minblk 10 maxblk 10
Start dump data blocks tsn: 6 file#: 7 minblk 11 maxblk 11
buffer tsn: 6 rdba: 0x0680000b (7/11)
scn: 0x0000.0018b7cb seq: 0x03 flg: 0x00 tail: 0xb7cb2303
frmt: 0x02 chkval: 0x0000 type: 0x23=PAGETABLE SEGMENT HEADER
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 16 #blocks: 128
last map 0x00000000 #maps: 0 offset: 2716
Highwater:: 0x06800041 ext#: 6 blk#: 8 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 50
mapblk 0x00000000 offset: 6
Unlocked
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0x0680000c ext#: 0 blk#: 3 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0
Level 1 BMB for High HWM block: 0x06800039
Level 1 BMB for Low HWM block: 0x06800009
--------------------------------------------------------
Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0
L2 Array start offset: 0x00001434
First Level 3 BMB: 0x00000000
L2 Hint for inserts: 0x0680000a
Last Level 1 BMB: 0x06800079
Last Level II BMB: 0x0680000a
Last Level III BMB: 0x00000000
Map Header:: next 0x00000000 #extents: 16 obj#: 29929 flag: 0x20000000
Extent Map
-----------------------------------------------------------------
0x06800009 length: 8
0x06800011 length: 8
0x06800019 length: 8
0x06800021 length: 8
0x06800029 length: 8
0x06800031 length: 8
0x06800039 length: 8
0x06800041 length: 8
0x06800049 length: 8
0x06800051 length: 8
0x06800059 length: 8
0x06800061 length: 8
0x06800069 length: 8
0x06800071 length: 8
0x06800079 length: 8
0x06800081 length: 8
Auxillary Map
--------------------------------------------------------
Extent 0 : L1 dba: 0x06800009 Data dba: 0x0680000c
Extent 1 : L1 dba: 0x06800009 Data dba: 0x06800011
Extent 2 : L1 dba: 0x06800019 Data dba: 0x0680001a
Extent 3 : L1 dba: 0x06800019 Data dba: 0x06800021
Extent 4 : L1 dba: 0x06800029 Data dba: 0x0680002a
Extent 5 : L1 dba: 0x06800029 Data dba: 0x06800031
Extent 6 : L1 dba: 0x06800039 Data dba: 0x0680003a
Extent 7 : L1 dba: 0x06800039 Data dba: 0x06800041
Extent 8 : L1 dba: 0x06800049 Data dba: 0x0680004a
Extent 9 : L1 dba: 0x06800049 Data dba: 0x06800051
Extent 10 : L1 dba: 0x06800059 Data dba: 0x0680005a
Extent 11 : L1 dba: 0x06800059 Data dba: 0x06800061
Extent 12 : L1 dba: 0x06800069 Data dba: 0x0680006a
Extent 13 : L1 dba: 0x06800069 Data dba: 0x06800071
Extent 14 : L1 dba: 0x06800079 Data dba: 0x0680007a
Extent 15 : L1 dba: 0x06800079 Data dba: 0x06800081
--------------------------------------------------------
Second Level Bitmap block DBAs
--------------------------------------------------------
DBA 1: 0x0680000a
End dump data blocks tsn: 6 file#: 7 minblk 11 maxblk 11
看块9,可以看到,段头的三个块没有动。另外的13个块都是FULL(100%充满)状态。
看块10,可以看到,充分利用的位图块的位置是:
0x06800009 Free: 1 Inst: 1 --对应9
0x06800019 Free: 1 Inst: 1 --对应25
0x06800029 Free: 1 Inst: 1 --对应41
应当还有一个不完全利用的
0x06800039 Free: 5 Inst: 1 --对应57
下面我们证实一下
块25的信息:
Start dump data blocks tsn: 6 file#: 7 minblk 25 maxblk 25
buffer tsn: 6 rdba: 0x06800019 (7/25)
scn: 0x0000.0018b7cb seq: 0x0e flg: 0x04 tail: 0xb7cb200e
frmt: 0x02 chkval: 0x261c type: 0x20=FIRST LEVEL BITMAP BLOCK
Dump of First Level Bitmap Block
--------------------------------
nbits : 4 nranges: 2 parent dba: 0x0680000a poffset: 1
unformatted: 0 total: 16 first useful block: 1
owning instance : 1
instance ownership changed at 08/19/2003 10:41:42
Last successful Search 08/19/2003 10:41:42
Freeness Status: nf1 0 nf2 0 nf3 0 nf4 0
Extent Map Block Offset: 4294967295
First free datablock : 16
Bitmap block lock opcode 0
Locker xid: : 0x0000.000.00000000
Highwater:: 0x00000000 ext#: 0 blk#: 0 ext size: 0
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0
HWM Flag: Not Set
--------------------------------------------------------
DBA Ranges :
--------------------------------------------------------
0x06800019 Length: 8 Offset: 0
0x06800021 Length: 8 Offset: 8
0:Metadata 1:FULL 2:FULL 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
--------------------------------------------------------
End dump data blocks tsn: 6 file#: 7 minblk 25 maxblk 25
块41的信息
Start dump data blocks tsn: 6 file#: 7 minblk 41 maxblk 41
buffer tsn: 6 rdba: 0x06800029 (7/41)
scn: 0x0000.0018b7cb seq: 0x35 flg: 0x04 tail: 0xb7cb2035
frmt: 0x02 chkval: 0x260f type: 0x20=FIRST LEVEL BITMAP BLOCK
Dump of First Level Bitmap Block
--------------------------------
nbits : 4 nranges: 2 parent dba: 0x0680000a poffset: 2
unformatted: 0 total: 16 first useful block: 1
owning instance : 1
instance ownership changed at 08/19/2003 10:41:42
Last successful Search 08/19/2003 10:41:42
Freeness Status: nf1 0 nf2 0 nf3 0 nf4 0
Extent Map Block Offset: 4294967295
First free datablock : 16
Bitmap block lock opcode 0
Locker xid: : 0x0000.000.00000000
Highwater:: 0x00000000 ext#: 0 blk#: 0 ext size: 0
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0
HWM Flag: Not Set
--------------------------------------------------------
DBA Ranges :
--------------------------------------------------------
0x06800029 Length: 8 Offset: 0
0x06800031 Length: 8 Offset: 8
0:Metadata 1:FULL 2:FULL 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
--------------------------------------------------------
End dump data blocks tsn: 6 file#: 7 minblk 41 maxblk 41
块57的信息
Start dump data blocks tsn: 6 file#: 7 minblk 57 maxblk 57
buffer tsn: 6 rdba: 0x06800039 (7/57)
scn: 0x0000.0018b7cb seq: 0x04 flg: 0x04 tail: 0xb7cb2004
frmt: 0x02 chkval: 0x27d2 type: 0x20=FIRST LEVEL BITMAP BLOCK
Dump of First Level Bitmap Block
--------------------------------
nbits : 4 nranges: 2 parent dba: 0x0680000a poffset: 3
unformatted: 8 total: 16 first useful block: 1
owning instance : 1
instance ownership changed at 08/19/2003 10:41:42
Last successful Search 08/19/2003 10:41:42
Freeness Status: nf1 1 nf2 0 nf3 0 nf4 6
Extent Map Block Offset: 4294967295
First free datablock : 1
Bitmap block lock opcode 0
Locker xid: : 0x0000.000.00000000
Highwater:: 0x06800041 ext#: 6 blk#: 8 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 50
mapblk 0x00000000 offset: 6
HWM Flag: HWM Set
--------------------------------------------------------
DBA Ranges :
--------------------------------------------------------
0x06800039 Length: 8 Offset: 0
0x06800041 Length: 8 Offset: 8
0:Metadata 1:75-100% free 2:75-100% free 3:75-100% free
4:75-100% free 5:75-100% free 6:75-100% free 7:0-25% free
8:unformatted 9:unformatted 10:unformatted 11:unformatted
12:unformatted 13:unformatted 14:unformatted 15:unformatted
--------------------------------------------------------
End dump data blocks tsn: 6 file#: 7 minblk 57 maxblk 57
块9:2个段头+1个位图+13个FULL
块25:1个位图+15个FULL
块41:1个位图+15个FULL
块57:1个位图+6个75-100% free+1个0-25% free
大家可以看到正好满足上面的:
FS1 Blocks = 1
FS2 Blocks = 0
FS3 Blocks = 0
FS4 Blocks = 6
Full Blocks = 43
到这里,大家也明白了
3*16+8=56了
最后,我们讨论高水点的确定。
到这里,大家该知道高水点的位置是多少了吧,应该是56+8(文件头)+1=65。但是看我们的块11,怎么解释这个呢?
Highwater:: 0x06800041 ext#: 6 blk#: 8 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 50
mapblk 0x00000000 offset: 6
Unlocked
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0x0680000c ext#: 0 blk#: 3 ext size: 8
其中有两个Highwater,第一个记录了真正的高水点,H41,就是十进制65
第二个表示底的高水点,从哪里开始,很明显,从12(十六进制的c)
个块开始(前面是8个文件头+3个段头)
其实,我们从最后一个位图块(57)的dump中也可以看到这样的信息
Locker xid: : 0x0000.000.00000000
Highwater:: 0x06800041 ext#: 6 blk#: 8 ext size: 8
__________________
if not now,when?if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎访问Taobao dba团队Blog www.taobaodba.com
热烈庆祝新书出版,欢迎购买
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
piner
that's life
精华贴数 15
个人空间
0
技术积分 63160 (8)
社区积分 1695 (690)
注册日期 2003-2-24
论坛徽章:38
#5
使用道具
发表于 2003-8-22 16:18
到这里,该明白ASSM表的组成与结构了吧
大家有兴趣,可以继续研究插入与删除的情况,按照这个方法,应当就很简单了。
__________________
if not now,when?if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎访问Taobao dba团队Blog www.taobaodba.com
热烈庆祝新书出版,欢迎购买
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
biti_rainy
人生就是如此
精华贴数 38
个人空间
0
技术积分 111199 (4)
社区积分 11832 (132)
注册日期 2001-12-12
论坛徽章:41
#6
使用道具
发表于 2003-8-22 16:20
先 look look
__________________
眼界决定边界,态度决定高度
blog:
人生就是如此
yyhll
老会员
精华贴数 1
个人空间
0
技术积分 977 (1937)
社区积分 36 (5807)
注册日期 2001-10-15
论坛徽章:1
#7
使用道具
发表于 2003-8-22 16:21
好文,可置顶。让更多的人看到。
Fenng
版主
精华贴数 32
个人空间
0
技术积分 53085 (11)
社区积分 6605 (232)
注册日期 2001-12-18
论坛徽章:28
#8
使用道具
发表于 2003-8-22 16:29
有些凌乱,格式话一下吧,读起来有些费劲
这个有一个比较简单的图
__________________
我的Blog: www.dbanotes.net
点击即可用 Google Reader 订阅
支付宝官方Blog
4nyth1n9 th4t can 90 wr0n9 wi11 9o wr0ng
不想做厨师的裁缝不是好司机
piner
that's life
精华贴数 15
个人空间
0
技术积分 63160 (8)
社区积分 1695 (690)
注册日期 2003-2-24
论坛徽章:38
#9
使用道具
发表于 2003-8-22 16:39
fenng,你的这个图早给我,我就不会走这么多弯路了
看你的图,有些疑问
ASSM将分布很多位图块在表中,但看我的测试,也不是每个extent前都有一个位图块
而且,位图块不象是那种树状结构
是有一个块来管理所有的位图块的位置(就是段头的第二个块)。至于这个块是不是也是分布的,现在还不清楚,应当不是分布的,否则,oracle没有地方记载这种块的位置。
__________________
if not now,when?if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎访问Taobao dba团队Blog www.taobaodba.com
热烈庆祝新书出版,欢迎购买
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
Fenng
版主
精华贴数 32
个人空间
0
技术积分 53085 (11)
社区积分 6605 (232)
注册日期 2001-12-18
论坛徽章:28
#10
使用道具
发表于 2003-8-22 16:54
那个图是Oracle9iOCP培训文档D33452中的一个插图.
下面这个图是关于BMB的一些解释.
__________________
我的Blog: www.dbanotes.net
点击即可用 Google Reader 订阅
支付宝官方Blog
4nyth1n9 th4t can 90 wr0n9 wi11 9o wr0ng
不想做厨师的裁缝不是好司机
59
1/6
1
2
3
4
5
6
››
投票
交易
悬赏
活动
ITPUB论坛
≡ 数据库技术 ≡
> Oracle数据库管理
> Oracle开发
> Oracle Developer Suite
> Oracle入门与认证
> Oracle专题深入讨论
> Oracle新技术/11g
> Oracle电子文档
> Oracle Fusion中间件
> IBM数据库产品
> MS SQL Server
> Sybase管理与开发
> MySQL及其它开源数据库
> 内存数据库
> 数据仓库与数据挖掘
> 移动及嵌入式数据库
≡ 企业信息化 ≡
> ERP产品与实践
> CRM产品与实践
> HR产品与实践
> 物流
> 供应链
> 供应链建模与仿真
> 物流设备与系统工程
> 企业管理咨询
> 管理协同与办公自动化
> IT服务管理
> 数据中心建设
> ERP二次开发
> Oracle ERP
> Oracle EBS R12
> PeopleSoft与JDE
> EBS相关文档
> SAP R/3
> SAP Business One开发与快速实施
> SAP财务及CRM
> SAP后勤及HR
> mySAP ERP
> 系统开发及跨应用设置
> SAP相关文档
> 国外其它ERP产品
> 国内ERP产品
≡ 开发技术 ≡
> Java入门与认证版
> Java web开发及框架技术
> Java企业开发
> ASP.NET【已迁移到微软开发技术论坛】
> .Net企业开发与应用【已迁移到微软开发技术论坛】
> WEB程序开发
> WEB 2.0技术
> 动态语言
> 移动与游戏开发
≡ 系统设计与项目管理 ≡
> 系统分析与UML
> 系统分析与UML精华区
> 项目管理
> 项目过程
> 软件测试
> 算法讨论与研究
≡ IBM软件技术园地 ≡
> IBM数据库产品
> Lotus
> Tivoli
> Websphere
> Rational
> 与SOA相关的IBM产品与技术
> IBM软件技术精英协会
> 软件技术精英活动专版
≡ 操作系统与硬件 ≡
> AIX及IBM产品【已迁移到IXPUB】
> HP-UX及HP产品【已迁移到IXPUB】
> Solaris及SUN产品【已迁移到IXPUB】
> Linux及其应用 【已迁移到IXPUB】
> 其它UNIX系统【已迁移到IXPUB】
> windows系统及微软相关产品 【已迁移到IXPUB】
> 存储设备与容灾技术 【已迁移到IXPUB】
> 服务器 【已迁移到IXPUB】
≡ 行业纵向讨论区 ≡
> IT业界评论与展望
> 政府与教育事业
> 中国政府信息主管联盟
> 电信行业
> 金融行业
> 医卫行业
> 制造行业
> 电力行业
> 信息安全与审计
≡ 会员交流 ≡
> IT职业生涯
> 招聘求职商务信息
> 体育世界
> 体育博彩专版
> 旅游,驴友
> 汽车世界
> 外语角
> 数码摄影
> 你的故事我的歌
> 音乐推荐区
> 电子图书与IT文档资料
> 软件交流
> 软件交流精华区
≡ ITPUB产品与服务 ≡
> ITPUB地面活动专版
> BLOG天地
> WIKI世界
> 授权用户区
> 站务管理
≡ 微软开发技术 ≡
> 开发工具和语言
> .NET Framework 相关
> Visual Basic/VB.net
> Visual C#
> Visual C++/vc.net
> Visual Studio
> .NET软件架构与模式
> .NET开发辅助工具及框架
> Web开发
> ASP.NET与AJAX
> Web相关技术讨论(IIS等)
> Silverlight 技术
> 微软企业级产品技术
> SQL Server
> windows server
> SharePoint
> Exchange Server
> Biztalk
> 嵌入式及移动开发
> Windows Embedded 嵌入式技术
> Windows 移动设备
> Office开发
> Microsoft office system
> Office Business Application
> 微软产品用户交流区
> .Net电子书籍&&书籍介绍
> .Net人才交流
技术积分榜
社区积分榜
徽章
电子杂志
会员
团队
统计
邮箱
游乐场
帮助
TOP
CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号
联系我们
法律顾问
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计