oracle中的一些基本概念

  Oracle数据库的物理文件是存储在磁盘上的数据文件、控制文件和日志文件的总称。数据文件和日志文件是数据库中最重要的文件。数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间由数据块组成。那么,数据在数据文件中是如何组织的呢?要了解这些内容咱们首先必须理解什么是表空间(tablespace)、段(segment)、区(extent)、块(block),这些都是oracle数据库在数据文件中组织数据的基本单元。html

  块(block)是数据存储的物理单位,也是数据文件中最基础的单位。数据直接存储在块上,块是oracle空间分配的最小单位。oracle中的块大小常见的有三种:2KB、4KB、8KB。块的大小在数据库建立时就已经固定下来,数据库中每一个块的大小都是相同的,并且全部的块都有相同的格式,由“块头+表目录+行目录+空闲空间+数据空间”组成。块头包含着块类型(好比是表块、仍是索引块)的信息、磁盘上块的位置等信息。表目录(table directory),若是有的话,包含着此块中存储各行的表的信息(若是一个块中存有多个表中的数据)。行目录(row directory)包含着数据行的描述信息,它是一个指针数组,指示了每一行在数据块中的物理位置。块头、表目录、行目录统称为块开销(block overhead),是oracle用来统计、管理块自己的。剩下的两部分很简单,已经存有数据的就是数据空间,暂时没存的就是空闲空间。数据库

  区(extent)又叫盘区,是数据文件中一个连续的分配空间,它比块要大,由块组成。有些对象分配空间时可能至少须要两个盘区,好比回滚段,而这两个盘区不必定要求相连。区的大小从一个块到2GB不等。数组

  段(segment)是oracle数据库中的分配单位,对象如表、索引等都是以段为单位进行分配。当建立一个表时将建立一个表段,建立一个索引时就建立一个索引段。每个消耗存储空间的对象最终被存储到一个单一的段中。如回滚段、临时段、聚簇段、索引段等。服务器

  1)数据段:每一个不在簇中的表都有一个数据段。表中的全部数据都存储在数据段的区间中。每个簇都有一个数据段,簇中每一个表的数据都存储在簇的数据段中。oracle

  2)索引段:每一个索引都有一个索引段,存储全部的索引数据。post

  3)临时段:当执行SQL语句须要临时工做区时,Oracle将建立临时区。spa

  4)回滚段:若是当前系统处于自动重作管理模式,则数据库服务器使用表空间来管理重作的空间。若是使用手动重作管理模式,则数据库管理员须要建立一个或多个回滚段,用于临时存储重作信息。回滚段中的信息将在数据库恢复过程当中使用到。.net

  可是oracle11g中加入了新的特性:为了节省存储空间,对空表不创建段,这可能会致使咱们导出数据库的时候空表没法导出,关于解决方法请参考文章Oracle 11g导出空表、少表的解决办法指针

  表空间(tablespace)是一个逻辑容器,是为了统一Oracle物理和逻辑的结构而专门创建的。从物理上来讲,一个表空间是由具体的一个或多个物理文件构成的;从逻辑上来讲一个表空间是由具体的一个或多个用户模式下的表、索引等数据构成。在Oracle中表不可能单独存在,必定隶属于某一个用户,而某用户的数据一定存在于某个表空间中。日志

  方案(schema)又叫模式,是比表空间小一级的逻辑概念,它也是一个逻辑容器。多个用户可能共用一个表空间,那如何区分开每个用户?那么在表空间中对每一个用户都有一个对应的方案,用于保存单个用户的信息。

  oracle中存储的层次结构总结以下:

  1)数据库由一个或多个表空间组成;

  2)表空间由一个或多个数据文件组成,一个表空间包含多个段;

  3)段由一个或多个区组成;

  4)区是数据文件中一个连续的分配空间,由一个或多个块组成;

  5)块是数据库中最小、最基本的单位,是数据库使用的最小的I/O单元;

  6)每一个用户都有一个对应的方案。

 

参考资料:

http://www.cnblogs.com/gsk99/archive/2011/04/14/2016216.html

http://m.oschina.net/blog/76768

相关文章
相关标签/搜索