ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 表空间和数据文件实验二:ASSM之特殊情况

表空间和数据文件实验二:ASSM之特殊情况

原创 Linux操作系统 作者:dawningwang 时间:2011-01-07 16:14:07 0 删除 编辑

自动段存储管理ASSM的扩展实验

 

 

本实验通过对一个段中的连续分配的块块记录进行分析,关注段的内部组织结构:

 

SQL> create table scott.emp5 as select * from scott.emp;

 

表已创建。

SQL> alter table scott.emp5 allocate extent;

表已更改。

SQL> /

表已更改。

SQL> /

表已更改。

 

后来过了很长一段时间后,又

 

SQL> alter table scott.emp5 allocate extent;

表已更改。

 

上面空间不是一次性分配的,PAGETABLE SEGMENT HEADER也就不是唯一一个,SECOND LEVEL BITMAP BLOCK也就不是唯一一个,而是很多的,这里是五次分配空间。

 

一,选择段的当前块

SQL> select file_id,extent_id,block_id,blocks  from dba_extents

  2  where segment_name='EMP5';

 

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

---------- ---------- ---------- ----------

         4          0        553          8

         4          1        561          8

         4          2        569          8

         4          3        577          8

         4          4        617          8

 

二.对块数据进行分析

 

跟踪信息:从553块开始一直到624块。但只需要注意的是每个区的前三个(不一定是前3个,也有可能是第1个,因为有的时候元数据只是第1位),因为前面的数据记录着这个区的结构信息。下面对这些重要信息进行摘录,进行比较:

 

块

内容

553,554,555

553是FIRST LEVEL BITMAP BLOCK,rdba: 0x01000229,parent dba:  0x0100022a。

DBA Ranges:0x01000229  Length: 8      Offset: 0     

            0x01000231  Length: 8      Offset: 8     

16个block的信息。然后底下显示了16个block的状态:前3个为元数据,后13个为数据记录。

问:为什么一个extent中有8个block而这里记录了16个的信息呢?

554是SECOND LEVEL BITMAP BLOCK,rdba: 0x0100022a, pdba:     0x0100022b。

  L1 Ranges :

   0x01000229  Free: 5 Inst: 1

   0x01000239  Free: 5 Inst: 1

   0x01000269  Free: 5 Inst: 1

 

555是PAGETABLE SEGMENT HEADER ,rdba: 0x0100022b,没有pdba .

 

  Extent Map

   0x01000229  length: 8    

   0x01000231  length: 8    

   0x01000239  length: 8    

   0x01000241  length: 8    

   0x01000269  length: 8     

  Auxillary Map

   Extent 0     :  L1 dba:  0x01000229 Data dba:  0x0100022c

   Extent 1     :  L1 dba:  0x01000229 Data dba:  0x01000231

   Extent 2     :  L1 dba:  0x01000239 Data dba:  0x0100023a

   Extent 3     :  L1 dba:  0x01000239 Data dba:  0x01000241

   Extent 4     :  L1 dba:  0x01000269 Data dba:  0x0100026a

 

   Second Level Bitmap block DBAs

     DBA 1:   0x0100022a

 

561,562,563

561是FIRST LEVEL BITMAP BLOCK ,rdba: 0x01000231 , parent dba:  0x01000232

DBA Ranges :

     0x01000231  Length: 8      Offset: 0 

562是SECOND LEVEL BITMAP BLOCK ,rdba: 0x01000232, pdba:     0x01000233

L1 Ranges :

     0x01000231  Free: 5 Inst: 1

563是PAGETABLE SEGMENT HEADER ,rdba: 0x01000233 , 没有pdba。

 

Extent Map

   0x01000231  length: 8    

  Auxillary Map

    Extent 0     :  L1 dba:  0x01000231 Data dba:  0x01000234

   Second Level Bitmap block DBAs

   DBA 1:   0x01000232

569,570,571

569 FIRST LEVEL BITMAP BLOCK  rdba: 0x01000239  parent dba:  0x0100022a

DBA Ranges :

   0x01000239  Length: 8      Offset: 0     

   0x01000241  Length: 8      Offset: 8     

570 SECOND LEVEL BITMAP BLOCK  rdba: 0x0100023a  pdba:     0x0100023b

L1 Ranges :

   0x01000239  Free: 5 Inst: 1

571 PAGETABLE SEGMENT HEADER

Extent Map

   0x01000239  length: 8    

  Auxillary Map

    Extent 0     :  L1 dba:  0x01000239 Data dba:  0x0100023c

   Second Level Bitmap block DBAs

    DBA 1:   0x0100023a

577,578,579

577 FIRST LEVEL BITMAP BLOCK rdba: 0x01000241  parent dba:  0x01000242  

total: 8

DBA Ranges :

 0x01000241  Length: 8      Offset: 0     

前3个为元数据

578 SECOND LEVEL BITMAP BLOCK  rdba: 0x01000242  pdba:     0x01000243

L1 Ranges :

     0x01000241  Free: 5 Inst: 1

579 PAGETABLE SEGMENT HEADER rdba: 0x01000243  无pdba.

Extent Map

   0x01000241  length: 8     

 Auxillary Map

    Extent 0     :  L1 dba:  0x01000241 Data dba:  0x01000244

 Second Level Bitmap block DBAs

    DBA 1:   0x01000242

 

617,618,619

617 FIRST LEVEL BITMAP BLOCK  rdba: 0x01000269  parent dba:  0x0100022a

 

total: 8         0:Metadata  

DBA Ranges :

     0x01000269  Length: 8      Offset: 0    

618 rdba: 0x0100026a  无位图显示 无pdba

 

619 rdba: 0x0100026b

 

 

这里可以看到前3个块(553,554,555)不仅是这个区的开始的3个块也是这个段EMP5开始的3个块,所以它们的记录有这个区的,也有这个段的。

先说555块,555是PAGETABLE SEGMENT HEADER,在这里可以理解为是THIRD LEVEL BITMAP BLOCK,是记录这个段的核心内容。(这里想想,以前说区的本地管理时也是第3个块记录位图信息,位图信息是本地管理记录的核心信息。是不是Oracle的管理偏爱第3个块呢?)555块记录的有什么呢?地址!什么地址?这个段的地址:

Extent Map

   0x01000229  length: 8    

   0x01000231  length: 8    

   0x01000239  length: 8    

   0x01000241  length: 8    

   0x01000269  length: 8    

 

  Auxillary Map

   Extent 0     :  L1 dba:  0x01000229 Data dba:  0x0100022c

   Extent 1     :  L1 dba:  0x01000229 Data dba:  0x01000231

   Extent 2     :  L1 dba:  0x01000239 Data dba:  0x0100023a

   Extent 3     :  L1 dba:  0x01000239 Data dba:  0x01000241

   Extent 4     :  L1 dba:  0x01000269 Data dba:  0x0100026a

 

通过比较就会发现,记录的是段EMP5的5个区间的地址。Extent Map记录的是每个区间的开始地址和长度;Auxillary Map记录的是每个区间的FIRST LEVEL BITMAP的开始位置和数据的开始地址,可见FIRST LEVEL BITMAP不是一个区间一个的,而这里是二个区间一个的,即一个FIRST LEVEL BITMAP管理16个块。Extent 0,Extent 1是一个开始地址0x01000229,Extent 2 Extent 3是一个,开始地址0x01000239,Extent 4因为是只剩下一个,所以也自成一个,但后面会有实验证明它也是二个区间一个。Auxillary Map同时也记录着Data dba,数据开始的地址,数据前的是元数据,元数据记录的是块和段的信息,而不是段中真正存储的信息,这里举例:Extent 0     :  L1 dba:  0x01000229 Data dba:  0x0100022c ,说明是从第4个块(556)开始记录信息的,前面的3个块是元数据。Extent 2     :  L1 dba:  0x01000239 Data dba:  0x0100023a 是从第2块(570)记录数据的,第1个块是元数据,这些也可以在每个区间的第1个块的里面看到。Second Level Bitmap block DBAs  DBA 1:   0x0100022a则是记录的是它的下一级位图Second Level Bitmap结构的地址:0x0100022a ,块554的地址。

554是SECOND LEVEL BITMAP BLOCK地址是0x0100022a,父地址是0x0100022b,一查看就知道是555块。554记录着FIRST LEVEL BITMAP BLOCK的开始地址,分别是0x01000229(553块),0x01000239(569块),0x01000269(617块)。

  L1 Ranges :

   0x01000229  Free: 5 Inst: 1

   0x01000239  Free: 5 Inst: 1

   0x01000269  Free: 5 Inst: 1

 

553是FIRST LEVEL BITMAP BLOCK,当前地址是0x01000229,父地址是0x0100022a一查看就知道是554块。553块记录着FIRST LEVEL BITMAP的地址范围:

DBA Ranges:0x01000229  Length: 8      Offset: 0     

            0x01000231  Length: 8      Offset: 8     

 

其他区间的情况较段开始的3个块简单多了,这次实验的这几个块有如下规律:段是以16个块两个区管理的,所以当前五个段可分为3部分:553-568,569-584,617-624。每个部分的第一个区间的父地址指向的是554块,即第一个SECOND LEVEL BITMAP BLOCK。也就是说每个部分的第1个区间的FIRST LEVEL BITMAP指向本段的第一个SECOND LEVEL BITMAP BLOCK 554。而每部分的第2个区间则是内部本身指向,即FIRST LEVEL BITMAP,SECOND LEVEL BITMAP BLOCK,PAGETABLE SEGMENT HEADER这三个地址是挨着的,都是一个区间的。617-624由于是单独的区间,没有与其他区间联合组成16个块,所以它没有SECOND LEVEL BITMAP BLOCK,PAGETABLE SEGMENT HEADER。因为这里的FIRST LEVEL BITMAP要管理16个块,而617块当前只管理了8个块。

 

本实验的管理如下表简单描述:

 

PAGETABLE SEGMENT HEADER

SECOND LEVEL BITMAP BLOCK

FIRST LEVEL BITMAP

555

554

553  (管理从553-568)

569   (管理从569-584)

617   (管理从617-624)

563

562

561   (管理从561-568)

571

570

569  (管理从569-584)

579

578

577  (管理从577-584)

 

 

需要说明的是:这里存在着这个结构:3-2-1,区间的第3个块管理着整个区间甚至整个段,它的管理通过区间的第2个块来实现,而第2个块通过第1个块实现,所以可以在第1,2个块中见到parent dba,而在第3个块中不曾发现。管理段或区间的块是元数据块,不是数据块。

前面的分析很复杂,有多个PAGETABLE SEGMENT HEADER,因为空间不是一次分配的,是多次分配的结果。

 

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

下一篇: statspack的安装
请登录后发表评论 登录
全部评论

注册时间:2010-05-15

  • 博文量
    18
  • 访问量
    26437