Oracle 11g笔记——表空间和数据文件的管理

Oracle的存储结构分为物理结构与逻辑结构
物理结构:数据文件(Datafiles)、联机日志文件(Online Redo Logs)和控制文件(Control Files)
          另外文件:参数文件、警报文件、跟踪文件、备份文件
逻辑结构:数据块、区、段、表空间

一、数据块

1、数据块格式:
   块头:存放块的基本信息,如:块的物理地址、块所属的段类型(是数据段还是索引段)
   表目录:存放表的信息
   行目录:如果块中有行数据存在,则这些行的信息将被记录在行目录中。这些信息包括行的地址等
   行数据:是真正存放表数据和索引数据的地方。
   空余空间:是一个块中没有使用的区域,用于新行的插入和已经存在的行的更新
   头部信息区:把块头、表目录、行目录这三部分合称为头部信息。

2、数据块中自由空间的使用
当insert数据时,块中的自由空间会减少,当update(使记录变长),块中的自由空间也会变少。
delete语句和update语句会使块中的自由空间增加。

3、行链接与行迁移

4、块中自由空间的自动管理
   Oracle使用位图(bitmap)来管理和跟踪数据块,这种块的空间管理叫自动管理
   a.易于使用 b、更好地利用空间 c、可以对空间进行实时调整

5、块中自由空间的手动管理
   可通过PCTFREE、PCTUSED来调整块中空间的使用,手动管理方式比较麻烦,不容易掌握,容易造成块中空间的浪费。


二、区
    区是一段连续的存储空间,当段中的空间耗尽时,Oracle会分配一个新的区给这个段。
    当创建一个表时,Oracle会给这个表的数据段分配一个初始区,即使没有数据的插入,Oracle还是会分配这个初始区。
    伴随着数据的添加,这个初始区的空间会被填满,Oracle会再分配一个新的区给这个数据段,叫做“递增区”
    分配机制:表空间级别、表级别


三、段
    1、数据段
       存放数据,一个单独的段可以存放下面的数据:一个普通表的数据、分区表中的一个分区、聚簇表
       创建表的时候,其实质就是创建一个或多个段。创建数据段的时候,可以指定数据段的存储参数

    2、索引段
       用于存放索引数据,创建索引段的时候,可以指定索引段的存储参数

    3、临时段
       用于存放临时数据。用于数据的排序。只有内存不足的时候,Oracle才会用到临时段。
       Oracle用到临时段,是数据库性能降低的一个征兆。所以DBA应该尽量让排序在内存中进行。当排序完成时,Oracle会释放临时段。
       用到临时段的SQL语句:
       CREATE INDEX
       SELECT ...ORDER BY
       SELECT DISTINCT
       SELECT ...GROUP BY
       SELECT ...UNION
       SELECT ...INTERSECT
       SELECT ...MINUS

    4、回滚段
    用于保存回滚条目,Oracle将数据被修改以前的版本保存在回滚条目中,利用这些条目,用户可以撤销以前对数据的修改,回滚条目还可以实现读一致性。


四、表空间
    1、大文件表空间
    2、系统表空间
    3、辅助表空间
    4、回滚表空间
    5、临时表空间

你可能感兴趣的:(Oracle 11g笔记——表空间和数据文件的管理)