(二)Oracle逻辑存储结构

引入:逻辑存储结构是Oracle数据库存储结构的核心内容。逻辑存储结构是从逻辑的角度分析数据的构成,是对数据存储结构在逻辑概念上的划分。逻辑结构是面向用户的,当用户使用Oracle设计数据库时,其使用的就是逻辑存储结构。Oracle的逻辑存储结构中所包含的多个结构对象从数据块到表空间形成了不同层次的粒度关系。

Oracle的逻辑存储结构如下图:

(二)Oracle逻辑存储结构_第1张图片

Oracle数据库由多个表空间组成,表空间由多个段组成,段由多个数据区组成,数据区由多个数据块组成。

数据块(Data Blocks)

数据块是Oracle逻辑存储结构中最小的逻辑单位,也是执行数据库输入输出操作的最小存储单位。数据块中可以存放表数据、索引数据和簇数据,无论存放那种类型的数据,其结构都是相同的。数据块有数据头、表目录、行目录、空余空间和行数据组成。

(二)Oracle逻辑存储结构_第2张图片
块头、表目录、行目录三部分为头部信息区,头部信息区不存放数据,它存放整个块的引导信息,引导系统读取系统数据。若头部信息遭到破坏,则Oracle系统将无法读取此数据块数据。空余空间和行数据共同构成块的存储区,用于存储数据记录。
头部信息区:
块头存放块的基本信息,块的物理地址、所属段的类型等;表目录存放表相关的信息;行目录存放行信息。
存储区:
空余空间是一块未被使用的区域,该区域用于新行的插入以及已经存在的行的更新;行数据用于存放表数据和索引数据。

数据区(Extent)

数据区(数据拓展区)是由一组连续的Oracle数据块所构成的Oracle存储结构,一个或者多个数据块组成一个数据区,一个或者多个数据区组成一个段。当一个段中的所有空间被使用完成后,Oracle系统将自动为该段分配一个新的数据区。

可见:数据区是Oracle存储分配的最小单位,Oracle就以数据区为单位进行存储控件的扩展。

使用数据区的目的是用来保存特定数据类型的数据,数据区是表中数据增长的基本单位,在Oracle数据库中,分配存储空间就是以数据区为单位的。一个Oracle对象包含至少一个数据区。设置一个表或者索引的存储参数包含设置它的数据区大小。

段(Segment)

段由一个或多个数据区构成的,它不是存储空间的分配单位,而是一个独立的逻辑存储结构,它用于存储表、索引或簇等占用空间的数据对象,Oracle也把这种占用空间的数据对象统一称为段。一个段只属于一个特定的数据对象,每当创建一个具有独立段的数据对象时,Oracle将为它创建一个段。

段是为特定的数据对象(如表、索引、回滚等)分配的一系列数据区。段内包含的数据区可以不连续,而且可以跨越多个文件,使用段的目的是用来保存特定对象。一个Oracle数据库通常有四种类型的段。

  1. 数据段:数据段中保存的是表中的数据记录。在创建数据表时,Oracle系统将为表创建数据段。当表中的数据量增大时,数据段的大小自然也随着变大,数据的增大过程是通过向其添加新的数据区来实现的。当创建一个表时,系统自动创建一个以该表的名字命名的数据段。
  2. 索引段:索引段中包含用于提高系统性能的索引。一旦建立索引,系统自动创建一个以该索引的名字命名的索引段。
  3. 回滚段:也叫撤销段,回滚段保存了回滚条目,Oracle将修改前的旧值保存在回滚条目中。利用这些信息,可以撤销未提交的操作,以便为数据库提供读入一致性和回滚未提交的事物,即用来回滚事物的数据空间。
  4. 临时段:当执行创建索引、查询等操作时,Oracle可能会使用一些临时存储空间,用于暂时性的保存解析过的查询语句以及在排序过程中产生的临时数据。Oracle系统将在专门用于存储临时数据的表空间中为操作分配临时段。
    注:在执行“create index”、“select order by”、“select distinct”和“select group by”等几种类型的sql语句时,Oracle系统就会在临时表空间中为这些语句的操作分配一个临时段。

表空间(TableSpace)

Oracle使用表空间将相关的逻辑结构(如段、数据区)组合在一起,表空间是数据库最大的逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象,任何数据对象在创建时都必须被指定存储在某个表空间中。表空间(属逻辑存储结构)与数据文件(属物理存储结构)相对应,一个表空间由一个或多个数据文件组成,一个数据文件只能属于一个表空间;Oracle数据的存储空间在逻辑上表现为表空间,而在物理上表现为数据文件。表空间类似于操作系统中的文件夹,而数据文件就相当于文件夹中的文件。每个数据库至少有一个表空间(SYSTEM表空间),表空间的大小等于所有从属于它的数据文件大小的总和。

在创建数据库时,Oracle会自动创建多个默认的表空间,这些表空间除了管理用于管理用户数据的表空间之外,还包括用于管理Oracle系统内部数据的表空间。Oracle11g默认创建的主要表空间:

  • SYSTEM表空间:存放Oracle系统内部表和数据字典的数据。Oracle本身不赞成将用户创建的表、索引等存放到系统表空间。表空间中的数据文件不是固定不变的,可以根据需要向表空间中追加新的数据文件。
  • SYSAUX表空间:此表空间是Oracle 11g新增的表空间,是随着数据库的创建而创建,它充当SYSTEM的辅助表空间,降低SYSTEM表空间的负荷,主要存储数据字典以外的其他数据对象。此表空间一般不存储用户数据,由Oracle系统内部自动维护。
  • UODO表空间:撤销表空间,用于存储撤销信息的表空间。
  • USERS表空间:用户表空间,Oracle建议用户使用的表空间,可以在这个表空间上创建各种数据对象(创建表、索引、用户等数据对象)。Oracle系统的样例用户SCOTT对象就存放在USERS表空间中。(除了Oracle系统默认创建的表空间外,用户可以根据应用系统的实际情况及其所要存放的对象类型创建多个自定义的表空间,以区分用户数据与系统数据。不同的数据应存放在不同的表空间,而不同的表空间的文件应该存放在不同的盘上,从而减少IO冲突,提高应用系统的操作性能)

注:Oracle从入门到精通阅读记录

你可能感兴趣的:(数据库)