oracle存储结构
- 格式:doc
- 大小:60.50 KB
- 文档页数:4
数据块,数据扩展,数据段简介
Oracle数据库负责为所有数据分配逻辑存储空间。数据库空间的分配单位有数据块(Data Block),数据扩展(Extent),和段(Segment)。图1-1说明了这些数据结构之间的关系。
Oracle存储数据的最小粒度(finest level of granularity)被称为数据块(data block)(也叫做逻辑块(
处于数据块之上的逻辑数据库空间是数据扩展(extent)。数据扩展是为存储数据而分配的一组连续的数据块。
位于数据扩展之上的逻辑数据库存储结构是段(segment)。段由一组数据扩展(extent)构成,这些数据扩展位于同一表空间(tablespace)中,用于存储各种逻辑数据结构。例如每个表(table)的数据都存储在其自身的数据段(data segment)中,每个索引(index)的数据都存储在其自身的索引段(index segment)中。如果表或索引是分区存储(partitioned)的,则每个分区拥有自己的段。
Oracle为段(segment)分配空间时以数据扩展(extent)为单位。当段内已有的数据扩展没有可用空间时,Oracle为此段分配一个新的数据扩展。因为数据扩展是随需分配的,所以一个段内的数据扩展在磁盘上未必是连续的。一个段(segment)以及属于她的所有数据扩展(extent)必须包含在同一表空间(tablespace)中。但在一个表空间内,属于同一个段的数据扩展可以分布在
多个数据文件(datafile)上,即段可以跨文件存储。但是每个数据扩展只能包含于同一个数据文件中。
在用户分配一个新的数据扩展(extent)时,其中的数据块(data block)未必被同时分配
数据块概述
Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(data block)。数据块是数据库中最小的(逻辑)数据单位。与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte)。每种操作系统都有一个被称为块容量(block size)的参数。Oracle每次获取数据时,总是访问整数个(Oracle)数据块,而不是按照操作系统块的容量访问数据。
数据库中标准的数据块(data block)容量是由初始化参数DB_BLOCK_SIZE指定的。除此之外,用户还可以指定五个非标准的数据块容量(nonstandard block size)。数据块容量应该设为操作系统块容量的整数倍(同时小于数据块容量的最大限制),以便减少不必要的I/O操作。Oracle数据块是Oracle可以使用和分配的最小存储单位。
数据扩展概述
数据扩展(extent)是由一组连续的数据块(data block)构成的数据库逻辑存储分配单位。而段(segment)则是由一个或多个数据扩展构成。当一个段中已有空间已经用完,Oracle 为这个段分配新的数据扩展。
数据扩展何时被分配
当用户创建数据表时,Oracle为此表的数据段(data segment)分配一个包含若干数据块(data block)的初始数据扩展(initial extent)。虽然此时数据表中还没有数据,但是在此初始数据扩展中的数据块已经为插入新数据做好了准备。
如果一个段(segment)的初始数据扩展(initial extent)中的数据块(data block)都已装满,且有新数据插入需要空间时,Oracle自动为这个段分配一个增量数据扩展(incremental extent)。增量数据扩展是一个段中继已有数据扩展之后分配的后续数据扩展,她的容量大于或等于之前的数据扩展。
表空间,数据文件,控制文件简介
Oracle中的数据逻辑上存储于表空间(tablespace)中,而物理上则存储于属于表空间的数据文件(datafile)中。下图说明了二者的关系。
图3-1 数据文件和表空间
图3-1显示一个由两个数据文件(datafile)组成的表空间(tablespace)。数据文件是一种物理存储结构,由唯一一个表空间拥有。表、索引等方案对象(schema objects)就存储在数据文件中。属于一个表空间的方案对象可
以跨多个数据文件。
数据库(database),表空间(tablespace),及数据文件(datafile)关系密切,但是她们又具有以下重要区别:
∙一个Oracle数据库是由一个或多个被称为表空间(tablespace)的逻辑存储单位构成的,这些表空间共同用于存储数据库的数据∙Oracle数据库的每个表空间由一个或多个被称为数据文件(datafile)的物理文件构成,这些文件由Oracle所在的操作系统管
理。
∙数据库的数据实际存储在构成各个表空间的数据文件中。例如,一个最简单的Oracle数据库至少包含一个表空间及一个数据文件。再例
如,一个数据库可能含有三个表空间,每个表空间由两个数据文件构
成(即总共有六个数据文件)。
表空间概述
数据库是由一个或多个被称为表空间(tablespace)的逻辑存储单位构成。表空间内的逻辑存储单位为段(segment),段又可以继续划分为数据扩展
(extent)。而数据扩展是由一组连续的数据块(data block)构成。
数据文件概述
Oracle数据库中每个表空间(tablespace)都是由一个或多个物理数据文件(datafile)构成的。一个数据文件只能由一个数据库的一个表空间使用。Oracle为表空间(tablespace)创建数据文件时(datafile),分配的磁盘空间总和为用户指定的存储容量加管理开销所需的文件头空间。当数据文件被创建后,Oracle所在的操作系统负责清除文件的数据及授权信息,并将她分配给Oracle使用。如果文件很大,这个过程将会消耗较长时间。Oracle 数据库中的第一个表空间总是 SYSTEM 表空间,因此Oracle在创建数据库时总是将第一个数据文件分配给 SYSTEM 表空间。