一、概述

逻辑结果从小到大可以划分为:块(block)、区(extent)、段(segment)、表空间

 

块(block:块是oracle数据库的最小逻辑单元,所有的数据存取都以块为单位进行。

区(extent):区是oracle数据库的最小分配单位,由一组连续的块组成,块可以在物理上不联系,但必须位于       同一个物理文件,单个区不可以跨文件分配。

段(segment):由一个或者多个区组成,一个逻辑结构。例如一个表就对应一个段。

表空间(tablespace):从逻辑上看由一个或者多个段组成,从物理上看由一个或者多个表空间组成(最大的逻辑单元)

 

1、块(block)

10g开始,每个数据库里面可以对应几个大小模块的块,可以是非标准的块。

合理的设置pctfree、以及pctused可以在提高空间利用率的同时减少行迁移。

 

Pctfree:当块的空闲空间达到该值,则不再插入新值;

Pctused:当块的利用率低于该值,才可能重新给该快插入新值

 

2、区(extent)

        oracle数据库中的最小分配单元,由一组连续的块组成。

        创建存储对象的时候,至少分配一个区,第一个分配区叫做初始区。当初始区填充满之后,系统会为对象分配后续扩展区(incremental Extent.

对象分配扩展自动进行,分配方式有多种,创建表空间的时候指定。Extent management local 默认为autoallocate

  • autoallocate:自动确认初始化及扩展区的大小。
  • Uniform:手动指定初始区的大小以及扩展大小。Uniform size 10M;

3、段(segment)

      段由一系列的区组成,一个段只属于特定的对象(如表、索引、LOB列等)。

     常见的段(1)数据段(2)索引段(3)回滚段(4)临时段

 

4、表空间(tablespace

表空间是数据库中最大的逻辑存储单位,同时也是直接与数据库物理结构关联的逻辑单位 ,每个表空间由一个或者多个数据文件组成(最大不超过1023个)。

 

特殊表空间类型

  • 1 system表空间
    • System 表空间主要用来保存数据库的数据字典,如dba_*,all_*,user_*等均保存在system表空间中;所有pl/sql程序源代码亦保存在system表空间中。
    • 建议不要在system表空间创建和system表空间无关的对象。
  • 2 sysaux表空间
    • system表空间的辅助空间。存放例如logminer等创建的兑现
  • 3undo表空间
    • 该表空间只能创建undo段,专门用来保存undo数据。
      • Create undo tablespace undotbs2 datafile ='/u01/app/oracle/undotbs2.dbf' size 200M;
      • Alter system set undo_tablespace =undotbs2;

 

  • 4 临时表空间
    • 该空间存储的对象都是临时的。
      • Create temporary tablespace temp01 tempfile='/u01/app/oracle/temp01.dbf' size 200M;
      • Alter  tablespace temp01  add tempfile= '/u01/app/oracle/temp02.dbf' size 200M;
      • Alter user scott temporary temp01