首页 > Linux操作系统 > Linux操作系统 > 表空间和数据文件实验二:ASSM
ASSM实验
通过一次性创建一个表,查看该表的段的组织结构。
SQL> create table scott.test2 as select * from dba_objects;
表已创建。
SQL> select extent_id,file_Id,block_id from dba_extents where segment_name='TEST2';
EXTENT_ID FILE_ID BLOCK_ID
---------- ---------- ----------
0 4 601
1 4 609
2 4 625
3 4 633
4 4 641
5 4 649
6 4 657
7 4 665
8 4 673
9 4 681
10 4 689
EXTENT_ID FILE_ID BLOCK_ID
---------- ---------- ----------
11 4 697
12 4 705
13 4 713
14 4 721
15 4 729
16 4 777
17 4 905
已选择18行。
SQL> alter system dump datafile 4 block min 601 block max 640;
系统已更改。
通过比较发现,段TEST2的第一个区间的前3个块是元数据,记录的是这个段的结构信息,记录的信息有PAGETABLE SEGMENT HEADER,SECOND LEVEL BITMAP BLOCK和FIRST LEVEL BITMAP。上面是新建立的一个段TEST2,空间也是一次分配的。只有一个PAGETABLE SEGMENT HEADER,一个SECOND LEVEL BITMAP BLOCK,然后有很多FIRST LEVEL BITMAP BLOCK。FIRST LEVEL BITMAP BLOCK通常是一个区间有8个block的是2个相邻区间一个,即一个FIRST LEVEL BITMAP BLOCK管理16个block。区间长度大于16的使用两个FIRST LEVEL BITMAP BLOCK,两个FIRST LEVEL BITMAP BLOCK是相邻的,如果长度是128,则前64个块由第一个FIRST LEVEL BITMAP BLOCK管理,后64个块由第二个管理。此处长度为24的第一个FIRST LEVEL BITMAP BLOCK管理全部的24个块,后一个FIRST LEVEL BITMAP BLOCK管理的为空,因为前面还能管理更多的块,现在还没满足。orc1_ora_2296.trc关键信息如下所示:
PAGETABLE SEGMENT HEADER 位置603块
Extent Map
-----------------------------------------------------------------
0x01000259 length: 8
0x01000261 length: 8
0x01000271 length: 8
0x01000279 length: 8
0x01000281 length: 8
0x01000289 length: 8
0x01000291 length: 8
0x01000299 length: 8
0x010002a1 length: 8
0x010002a9 length: 8
0x010002b1 length: 8
0x010002b9 length: 8
0x010002c1 length: 8
0x010002c9 length: 8
0x010002d1 length: 8
0x010002d9 length: 8
0x01000309 length: 128
0x01000389 length: 24
Auxillary Map
--------------------------------------------------------
Extent 0 : L1 dba: 0x01000259 Data dba: 0x0100025c
Extent 1 : L1 dba: 0x01000259 Data dba: 0x01000261
Extent 2 : L1 dba: 0x01000271 Data dba: 0x01000272
Extent 3 : L1 dba: 0x01000271 Data dba: 0x01000279
Extent 4 : L1 dba: 0x01000281 Data dba: 0x01000282
Extent 5 : L1 dba: 0x01000281 Data dba: 0x01000289
Extent 6 : L1 dba: 0x01000291 Data dba: 0x01000292
Extent 7 : L1 dba: 0x01000291 Data dba: 0x01000299
Extent 8 : L1 dba: 0x010002a1 Data dba: 0x010002a2
Extent 9 : L1 dba: 0x010002a1 Data dba: 0x010002a9
Extent 10 : L1 dba: 0x010002b1 Data dba: 0x010002b2
Extent 11 : L1 dba: 0x010002b1 Data dba: 0x010002b9
Extent 12 : L1 dba: 0x010002c1 Data dba: 0x010002c2
Extent 13 : L1 dba: 0x010002c1 Data dba: 0x010002c9
Extent 14 : L1 dba: 0x010002d1 Data dba: 0x010002d2
Extent 15 : L1 dba: 0x010002d1 Data dba: 0x010002d9
Extent 16 : L1 dba: 0x01000309 Data dba: 0x0100030b
Extent 17 : L1 dba: 0x01000389 Data dba: 0x0100038b
--------------------------------------------------------
Second Level Bitmap block DBAs
--------------------------------------------------------
DBA 1: 0x0100025a
SECOND LEVEL BITMAP BLOCK 0x0100025a 位置:602块
L1 Ranges :
--------------------------------------------------------
0x01000259 Free: 1 Inst: 1 对应的块: 601
0x01000271 Free: 1 Inst: 1 对应的块: 625
0x01000281 Free: 1 Inst: 1 对应的块: 641
0x01000291 Free: 1 Inst: 1 对应的块: 657
0x010002a1 Free: 1 Inst: 1 对应的块: 673
0x010002b1 Free: 1 Inst: 1 对应的块: 689
0x010002c1 Free: 1 Inst: 1 对应的块: 705
0x010002d1 Free: 1 Inst: 1 对应的块: 721
0x01000309 Free: 1 Inst: 1 对应的块: 777
0x0100030a Free: 1 Inst: 1 对应的块: 778
0x01000389 Free: 5 Inst: 1 对应的块: 905
0x0100038a Free: 5 Inst: 1 对应的块: 906
FIRST LEVEL BITMAP
位置:依据SECOND LEVEL BITMAP BLOCK的L1 Ranges
RDBA转换为地址是这样的:前10位为文件号,后22位为块号。
如0x01000259转成二进制是00100 00,0000,0000,0010,0101,1001 ,前面001,00是4,后面刚好是601,即文件4的601块。
一次分配的空间只有一个,而且HWM就在开始时的第三个块里面记录,其他块中找不到。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22528444/viewspace-683446/ ,如需转载,请注明出处,否则将追究法律责任。