Wetts's blog

Stay Hungry, Stay Foolish.

0%

Oracle从入门到精通-表空间、段、区、块

一个或多个数据块组成一个数据区,一个或多个数据区再组成段。

一个段可以属于多个数据文件。一个区不能跨越数据文件。

数据块(Data Blocks):

Oracle逻辑存储结构中最小的逻辑单位,也是执行数据库输入输出操作的最小存储单位。通常数据块是操作系统块的整数倍。Oracle支持在同一个数据库中使用多种大小的块,与标准块大小不同的块就是非标准块。

数据块由以下几个部分组成:

  • 块头:存放数据块的基本信息,如块的物理地址、块所属的段的类型。
  • 表目录:存放表的相关信息。
  • 行目录:如果块中有行数据存在,则这些行的信息将被记录在行目录中。这些信息包括行的地址等。
  • 空余空间:是一个块中未使用的区域,这片区域用于新行的插入和已经存在的行的更新。
  • 行数据:用于存放表数据和索引数据的地方。

v$parameter where name='db_block_size'可以查询标准的数据库大小。

数据区(Extent):

有一组连续的Oracle数据块所构成的Oracle存储结构。

段(Segment):

它不是存储空间的分配单位,而是一个独立的逻辑存储结构。

通常有以下4种类型的段:

  • 数据段:保存的是表中的数据记录。
  • 索引段:包含用于提高系统性能的索引。
  • 回滚段:保存了回滚条目,Oracle将修改前的旧值保存在回滚条目中。
  • 临时段:当执行创建索引、查询等操作时,Oracle可能会使用一些临时存储空间,用于暂时性地保持解析过的查询语句以及在排序过程中产生的临时数据。

表空间(TableSpace):

使用表空间将相关的逻辑结构组合在一起,是最大的逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象。表空间与数据文件相对应,一个表空间有一个或者多个数据文件组成,一个数据文件只属于一个表空间。

  • SYSTEM表空间:系统表空间,用于存放Oracle系统内部表和数据字典的数据,如表名、列名、用户等。
  • SYSAUX表空间:是Oracle11g新增加的表空间,是随着数据库的创建而创建的,充当SYSTEM的辅助表空间,主要存储除数据字段以外的其他数据对象。
  • UODO表空间:撤销表空间,用于存储撤销信息的表空间。当用户对数据表进行修改操作时,Oracle系统自动使用撤销表空间来临时存放修改前的旧数据。当所做的修改操作完成并执行提交命令后,Oracle根据系统设置的保留时间长度来决定何时释放掉撤销表空间的部分空间。
  • USERS表空间:用户表空间,是Oracle建议用户使用的表空间,可以在这个表空间上创建各种数据对象,比如创建表、索引、用户等数据对象。Oracle系统的样例用户SCOTT对象就存放在USERS表空间中。