Oracle 逻辑存储结构

版权声明:本文为博主原创文章,欢迎转载,转载请注明出处 https://blog.csdn.net/qq_40147863/article/details/85016441

Oracle 逻辑存储结构

逻辑存储结构是 Oracle 内部管理数据库中对象的方式:
database数据库–>tablespace表空间–> segment段–>extent区–> block块

一、数据块(data blocks)

数据块是 Oracle 数据库逻辑存储结构中的最小单位,也是执行数据库输入输出的最小存储单位。通常Oracle数据块是操作系统块的整数倍。数据块的标准大小被写入到初始化参数DB_BLOCK_SIZE中,oracle允许在同一个数据库中存在不同大小的数据块,与标准块大小不同的就是非标准块。

二、数据区(extent)

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

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

三、段(segment)

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

1.数据段:数据段中保存的是表中的数据记录。建表时Oracle系统将为表创建数据段。当表中数据量增大时,数据段的大小自然也随着变大,数据段的增大过程是通过向其添加新的数据区来实现的。当创建一个表时,系统自动创建一个以该表的名字命名的数据段。

2.索引段:索引段中包含了用于提高系统性能的索引。一旦建立索引,系统自动创建一个以该索引的名字命名的索引段。

3.回滚段:回滚段中保存了回滚条目,Oracle将修改前的旧值保存在回滚条目中。利用这些信息,可以撤销未提交的操作,以便为数据库提供读入一致性和回滚未提交的事务,即用来回滚事务的数据空间。当一个事务开始处理时,系统为之分配回滚段,回滚段可以动态创建和撤销。

4.临时段:当执行创建索引。查询等操作时,Oracle可能会使用一些临时存储空间,用于暂时性地保存解析过的查询语句以及在排序过程中产生的临时数据,Oracle系统将在专门用于存储临时数据的表空间中为操作分配临时段。

四、表空间(tablespace)

表空间是Oracle数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象。一个表空间由一个或多个数据文件(操作系统物理存储结构)组成,一个数据文件只属于一个表空间。表空间的大小等于所有从属于它的数据文件大小的总和。

表空间逻辑存储对象:

永久段–>如表与索引
临时段–>如临时表数据与排序段
回滚段–>用于事物回滚或闪回内存的撤销数据

表空间分类:
系统表空间(system、sysaux),非系统表空间

不可或缺的几个表空间:
SYSTEM —>字典表空间,不能被损坏
UNDO —>dml,dql把数据快照到此,数据提交即消失(用于恢复)
SYSAUX —>10g 高并发系统繁忙时,会造成system争用,将工具放到SYSAUX,减轻system的压力,SYSAUX不影响系统(影响性能)
TEMP —>临时数据相关的内容
USERS —>10g 用户数据从system拨离出来

关系及常见问题

表空间和数据文件的关系:

一个表空间包含一个或多个数据文件;
一个数据文件只能属于一个表空间;
一个表空间可以给多个用户访问。

猜你喜欢

转载自blog.csdn.net/qq_40147863/article/details/85016441