Oracle数据库表空间概述
Oracle数据库表空间概述
表空间介绍
Oracle单个数据库是由名为表空间的逻辑容器组成。
Oracle表空间逻辑容器结构,物理上是由数据文件组成。
表空间是段的逻辑存储容器。
段是Oracle数据库中表、索引等需要数据存储对象的逻辑存储结构。
在物理级别,表空间将数据存储在一个或多个数据文件或临时文件中。
数据库必须有 SYSTEM 和 SYSAUX 表空间。
下图显示了一个典型的数据库中的表空间。

永久表空间
永久表空间对持久性模式对象进行分组。表空间中对象的段物理上存储在数据文件中。
每个数据库用户被分配了一个默认的永久表空间。一个非常小的数据库可能只需要默认的 SYSTEM 和 SYSAUX 表空间。
Oracle 建议创建至少一个表空间来存储用户和应用程序数据。可以使用表空间实现以下目标:
1、控制数据库数据的磁盘空间分配
2、为数据库用户分配配额 (空间限额或限制)
3、将单个表空间联机或脱机,而不影响整个数据库的可用性
4、执行单个表空间的备份和恢复
5、使用 Oracle 数据泵实用程序导入或导出应用程序数据
6、通过创建一个可传输表空间,可以将其从一个数据库复制或移动到另一个数据库,甚至跨平台
通过传输表空间来移动数据,可能比导出/导入或卸载/装载相同的数据要快几个数量级,因为传输表空间只涉及复制数据文件并集成表空间元数据。当传输表空间时,还可以移动索引数据。
SYSTEM 表空间
SYSTEM 表空间是在数据库被创建时就包括的一个必要的管理性表空间。
Oracle 数据库使用 SYSTEM 来管理数据库。
SYSTEM 表空间包括以下信息,全部都由 SYS 用户所拥有
1、数据字典
2、包含数据库管理信息的表和视图
3、已编译的存储对象,如触发器、 过程、和包等
SYSTEM 表空间的管理与其他表空间几乎一样,但需要较高的特权,且在某些方面有所限制。例如,不能重命名或删除 SYSTEM 表空间。
默认情况下,Oracle 数据库将所有新创建的用户表空间设置为本地管理表空间。在 SYSTEM 为本地管理表空间的数据库中,不能创建字典管理表空间 (这已经过时)。但是,如果手动执行 CREATE DATABASE 语句并接受默认值,则 SYSTEM 表空间是字典管理的。可以将一个现有字典管理SYSTEM 表空间迁移到本地管理格式。
备注:Oracle 强烈建议使用数据库配置助手 (DBCA)创建新数据库,以便使包括SYSTEM 在内的所有表空间都缺省为本地管理表空间。
SYSAUX 表空间
SYSAUX 表空间是 SYSTEM 表空间的一个辅助表空间。
SYSAUX 表空间为未驻留在 SYSTEM 表空间的数据库元数据提供了一个集中的位置。
无论是在种子数据库中还是在用户自定义的数据库中,SYSAUX 都减少了默认创建的表空间数量。
包括 Oracle 企业管理器和 Oracle 流在内的几个数据库组件将 SYSAUX 表空间作为其默认存储位置。因此,SYSAUX 表空间在数据库创建或升级过程中自动创建。
在正常的数据库操作中,数据库不允许删除或重命名 SYSAUX 表空间。如果 SYSAUX 表空间变得不可用,则数据库的核心功能仍是可用的。使用SYSAUX 表空间的数据库特性可能会失败,或只能发挥有限功能。
撤销表空间(Undo Tablespaces)
撤消表空间是为系统管理的撤消数据而保留的一个本地管理表空间。与其他永久表空间类似,撤消表空间也包含数据文件。在这些文件中的撤消块被分组为一些扩展区(extent)。
自动撤消管理模式
撤消表空间要求数据库处于默认的自动撤消管理模式。
此模式消除了手动管理撤消段的复杂性。
数据库自动对其进行优化,提供撤消数据最佳可能的保留期,以满足可能需要此数据的长时间查询。
Oracle 数据库包含一个撤消顾问,可提供有助于自动化撤消段和空间的建议。
新安装的 Oracle 数据库会自动创建一个撤消表空间。早期版本的 Oracle 数据库可能不包含撤消表空间,而是使用在手动撤消管理模式下的传统的回滚段。在升级到 高版本Oracle 数据库时,可以启用自动撤消管理模式,并创建一个撤消表空间。
数据库可以包含多个撤消表空间,但一次只能使用其中的某一个。当实例尝试打开数据库时,Oracle 数据库将自动选择第一个可用的撤消表空间。若没有撤消表空间可用,则实例以不带撤消表空间的方式启动,并将撤消数据存储在 SYSTEM 表空间中。建议不要在 SYSTEM 表空间中存储撤消数据。
自动撤销保留
撤消保留期是 Oracle 数据库在覆盖旧的撤消数据之前尝试对其保留的最小时间量。撤消保留很重要,因为长时间运行的查询可能需要旧数据块前像以提供读取一致性。此外,某些 Oracle 闪回功能也可能会依赖于撤消数据的可用性。
通常,应该尽可能保留旧的撤消数据。事务提交后,撤消数据对于回滚或恢复事务不再是必需的。如果撤消表空间还有足够空间用于新事务,数据库可能会保留旧的撤消数据。当可用空间偏低时,数据库开始覆盖已提交事务的旧撤消数据。
数据库自动为当前的撤消表空间提供最佳可能的撤消保留。数据库会收集使用情况统计信息,并基于这些统计信息和撤消表空间大小来调整保留期。如果撤消表空间配置了 AUTOEXTEND 选项,而且也未指定最大大小,则撤消保留调整会有所不同。在这种情况下,如果空间允许,数据库将撤消保留期调整为比最长运行的查询稍长。
临时表空间
临时表空间仅包含在会话期间存在的瞬态数据。
永久模式对象不能驻留在临时表空间中。
数据库临时表空间数据存储在临时文件中。
临时表空间可以提高不适合在内存中进行的多个排序操作的并发性。这些表空间也提高了在排序过程中空间管理的效率。
当 SYSTEM 表空间为本地管理时, 在数据库创建期间,该数据库中会缺省包含一个默认的临时表空间。
本地管理的 SYSTEM 表空间不能作为默认临时存储。
注意:不能使一个默认临时表空间永久化。
当你创建一个数据库时,可以通过在 CREATE DATABASE 语句中使用DEFAULT TEMPORARY TABLESPACE 扩展选项,来指定一个用户命名的默认临时表空间。如果 SYSTEM 是字典管理的,且在创建数据库时未定义一个默认临时表空间,则 SYSTEM 为其默认临时存储。不过,数据库会在警报日志中写入一条警告,说建议创建一个默认的临时表空间。
表空间模式
由表空间模式确定表空间的可访问性。
读/写和只读表空间
每个表空间都处于某种写入模式,以指定是否可以对其进行写入操作。有两种互斥的模式,如下所示:
1、读/写模式
用户可以读取和写入表空间。所有表空间最初都被创建为可读/写的。
SYSTEM、 SYSAUX 表空间、和临时表空间总是可读/写的,也就是不能将它们置为只读。
2、只读模式
对表空间中数据文件的写操作被禁止。只读表空间可以驻留在只读介质上,如 DVD 或 WORM 驱动器。
只读表空间消除了对数据库中大型的静态部分执行备份和恢复的需要。只读表空间不会变更,因此不需要重复的备份。如果在介质故障后恢复一个数据库,则不需要恢复只读表空间。
联机和脱机表空间
当数据库处于打开状态时,表空间可以处于联机状态 (可访问) 或脱机状态 (不能访问)。
表空间通常是联机的,以便其数据可供用户使用。
SYSTEM 表空间和临时表空间不能脱机。
表空间可以自动或手动脱机。例如,可以将表空间脱机,以进行维护或备份与恢复。数据库在遇到某些错误时会自动将一个表空间脱机,比如数据库写进程 (DBWn)多次试图写入数据文件但遭遇失败时。当用户试图访问一个脱机表空间中的表时,将收到一个错误。
当一个表空间进入脱机状态时,数据库执行以下任务:
1、数据库不允许后续 DML 语句引用脱机表空间中的对象。脱机的表空间无法被除 Oracle 数据库之外的任何其它实用程序读取或编辑。
2、活动事务中的某些已完成的语句,曾引用了脱机表空间中的数据,这些事务在事务级别不受影响。
3、数据库将对应于那些已完成语句的撤销数据保存在 SYSTEM 表空间中的一个延迟撤销段中。当该表空间被恢复联机时,数据库会根据需要将这些撤销数据应用到该表空间上。
表空间文件大小
表空间可以是一个大文件表空间或小文件表空间。这些表空间的区别在于SQL 语句的执行是否需要显式引用数据文件或临时文件。
区别如下:
1、小文件表空间可以包含多个数据文件或临时文件,但其文件不能像大文件表空间中的文件那么大。这是默认的表空间类型。
2、大文件表空间仅包含一个非常大的数据文件或临时文件。
大文件类型的表空间优点:
1)提高数据库的存储容量,数据库中的数据文件的最大数量有限 (通常为 64 KB 个文件),所以增加每个数据文件的大小也就增加了总的存储量。
2)减轻管理过多数据文件和临时文件的负担,大文件表空间使用 Oracle 管理的文件和自动存储管理 (Oracle ASM),通过消除添加新文件和处理多个文件的需要,简化了文件管理。
3)在表空间上(而不是在单个文件上)执行操作,大文件表空间将表空间作为磁盘空间管理、 备份和恢复等的主要单位。
3、大文件表空间只支持使用 ASSM 的本地管理表空间。然而,本地管理的撤消和临时表空间,即便在手动段管理模式下,仍然可以是大文件表空间。
备注:实际生产环境中,一般使用小文件表空间;大文件表空间只有一个数据文件,对于数据的备份和恢复,粒度太大了。
建议将《Oracle数据库逻辑存储结构》、《Oracle数据库表空间概述》、《Oracle数据库段segment概述》、《Oracle数据库扩展区(extent)概述》、《Oracle数据库数据块概述》这5篇文章一起看,对Oracle数据库的逻辑结构会有全面的理解。
浙公网安备 33010602011771号