物理存储结构
可在操作系统级别查看 Oracle 数据库的物理数据库结构。
-
物理存储结构简介 RDBMS 的一个特性是逻辑数据结构(如表、视图和索引)与物理存储结构(如文件)的独立性。
-
数据文件概览在操作系统级别,Oracle AI Database 将数据存储在称为数据文件的结构中。每个 Oracle 数据库(无论是 CDB 还是 PDB)必须至少有一个数据文件。
-
控制文件概览 数据库控制文件是仅与一个 CDB 关联的小型二进制文件。
-
联机重做日志概述 恢复的最关键结构是联机重做日志,该日志由两个或更多预分配文件组成,在发生更改时存储对数据库的更改。联机重做日志记录对数据文件的更改。
物理存储结构简介
RDBMS 的一个特性是逻辑数据结构(如表、视图和索引)与物理存储结构(如文件)的独立性。
由于物理结构和逻辑结构是分开的,因此可以管理数据的物理存储,而不会影响对逻辑结构的访问。例如,重命名数据库文件不会重命名其中存储的表。
Oracle 数据库是一组将 Oracle 数据存储在持久性存储中的文件。从 Oracle Database 21c 开始,仅支持多租户容器数据库 (container database,CDB) 体系结构。CDB 包含一个或多个 PDB。
本节讨论在发出 CREATE DATABASE 语句以创建 CDB 时生成的数据库文件:
-
数据文件和临时文件
数据文件是由 Oracle AI Database 创建的持久性存储中的物理文件,包含表和索引等数据结构。临时文件是一种属于临时表空间的数据文件。数据以其他程序无法读取的 Oracle 专用格式将数据写入这些文件中。
在 PDB 中创建 PDB 时,PDB 在构成 CDB 的整个数据文件集中拥有自己的数据集。例如,可以创建一个名为
mycdb的 CDB,然后在其中创建两个 PDB:hrpdb和salespdb。在这种情况下,mycdb将拥有自己的数据集和临时文件,hrpdb和salespdb也是如此。 -
控制文件
控制文件是指跟踪 CDB 物理组件的根文件。PDB 没有自己的单独控制文件。
-
联机重做日志文件
联机重做日志是一组包含对 CDB 内数据所做的更改记录的文件。PDB 没有自己的单独联机重做日志文件。
数据库实例是一组管理 CDB 中数据库文件的内存结构。下图显示了实例与其管理的文件之间的关系。
图 1:数据库实例和数据库文件

-
Mechanisms for Storing Database Files(存储数据库文件的机制)提供了几种机制来分配和管理这些文件的存储。
-
Oracle Managed Files and User-Managed Files Oracle Managed Files 是一种文件命名策略,可用于根据数据库对象而不是文件名指定操作。例如,可以在不指定表空间数据文件名称的情况下创建表空间。
-
Oracle Automatic Storage Management (Oracle ASM) Oracle ASM 是一款适用于 Oracle AI Database 文件的高性能、易于管理的存储解决方案。Oracle ASM 是一个卷管理器,它提供了一个专供数据库使用的文件系统。
-
Oracle Persistent Memory Filestore (PMEM Filestore) PMEM 是可字节地址的持久性内存。Oracle Persistent Memory Filestore (PMEM Filestore) 可以存储数据文件、联机重做日志文件和控制文件。
另请参见:
-
Oracle AI Database Administrator’s Guide,了解如何创建数据库
-
Oracle AI Database SQL Language Reference(适用于
CREATE DATABASE语义和语法)
用于存储数据库文件的机制
可使用多种机制来分配和管理这些文件的存储。
机制包括:
-
操作系统文件系统文件系统
大多数 Oracle 数据库将文件存储在文件系统中,这是用于存储和检索数据的结构。
通过文件系统,可以以标准且一致的方式将存储空间用于应用程序数据。每个文件都有一个名称,并显示为 Oracle AI Database 等应用程序的连续地址空间。数据库可以创建、读取、写入、调整大小和删除文件。
文件系统通常基于一个由称为逻辑卷管理器 (logical volume manager,LVM) 的软件包构建的逻辑卷构建。LVM 使多个物理磁盘的碎片可以组合成显示为单个连续地址空间的内容。
-
群集文件系统
群集文件系统是一个分布式文件系统,它是一组协同为客户机提供一致性和高性能的服务器。在 Oracle RAC 环境中,群集文件系统会使共享存储显示为群集环境中许多计算机共享的文件系统。对于群集文件系统,群集中的计算机出现故障不会使文件系统不可用。但是,在操作系统文件系统中,如果通过 NFS 或其他方式共享文件的计算机出现故障,则文件系统不可用。
-
Oracle Persistent Memory Filestore(PMEM 归档存储)
PMEM Filestore 设计用于在持久内存 (PMEM) 中存储数据库文件,持久内存是可字节地址的持久内存。可以使用
CREATE PMEM FILESTORE命令创建 filestore。在 Linux 操作系统级别,文件存储将数据存储在以fsdax模式挂载的大型 ext4 文件系统中。PMEM Filestore 在 Oracle AI Database 中显示为 Linux 上的本机文件系统。注:与符合 POSIX 的文件系统不同,PMEM Filestore 不能由多个 Oracle 数据库共享。
-
Oracle Automatic Storage Management (Oracle ASM)
Oracle ASM 包含专为 Oracle AI Database 使用的文件系统。
数据库可以使用上述存储机制的组合。例如,数据库可以将服务器参数文件存储在传统的文件系统中,将数据库文件存储在 PMEM Filestore 中,然后将重做日志文件归档到群集文件系统。
另请参见:
-
Oracle AI Database Administrator’s Guide:通过查询数据库视图来查看数据库存储结构
Oracle Managed Files 和用户管理的文件
Oracle Managed Files 是一种文件命名策略,可用于根据数据库对象而不是文件名指定操作。例如,可以在不指定表空间数据文件名称的情况下创建表空间。
通过 Oracle Managed Files,管理员无需直接管理数据库中的操作系统文件。Oracle ASM 需要 Oracle Managed Files。
注:此功能不影响管理文件的创建或命名,例如跟踪文件、审计文件和预警日志。
使用用户管理的文件,可以直接管理数据库中的操作系统文件。您可以决定有关文件结构和命名。例如,创建表空间时,需要设置表空间数据文件的名称和路径。
通过初始化参数,可以为特定类型的文件指定文件系统目录。Oracle Managed Files 功能可确保数据库创建唯一文件并在不再需要时将其删除。数据库内部使用标准文件系统接口为存储在快速恢复区中的数据文件和临时文件、控制文件以及与恢复相关的文件创建和删除文件。
Oracle Managed Files 不会消除现有功能。您可以在手动管理旧文件时创建新文件。因此,数据库可以混合使用 Oracle Managed Files 和用户管理的文件。
另请参见:
-
“诊断文件概述”
-
Oracle AI Database Administrator’s Guide,了解如何使用 Oracle Managed Files
Oracle Automatic Storage Management (Oracle ASM)
Oracle ASM 是一款适用于 Oracle AI Database 文件的高性能、易于管理的存储解决方案。Oracle ASM 是一个卷管理器,它提供了一个专供数据库使用的文件系统。
与传统文件系统和存储管理器相比,Oracle ASM 具有以下优势:
-
简化与存储相关的任务,例如创建和布局数据库以及管理磁盘空间
-
在物理磁盘之间分配数据,以消除热点,并在磁盘之间提供统一的性能
-
在存储配置更改后自动重新平衡数据
要使用 Oracle ASM,可以为 Oracle AI Database 分配分区磁盘,并具有条带化和镜像首选项。Oracle ASM 管理磁盘空间,将 I/O 负载分布在所有可用资源中,以优化性能,同时无需手动进行 I/O 优化。例如,您可以增加数据库磁盘的大小,或者将数据库的一部分移动到新设备,而无需关闭数据库。
-
Oracle ASM 存储组件 Oracle AI Database 可以将数据文件存储为 Oracle ASM 磁盘组中的 Oracle ASM 文件。在磁盘组中,Oracle ASM 会为数据库文件公开文件系统接口。
-
Oracle ASM 实例 Oracle ASM 实例是管理 Oracle ASM 磁盘的特殊 Oracle 实例。
Oracle ASM 存储组件
Oracle AI Database 可以将数据文件存储为 Oracle ASM 磁盘组中的 Oracle ASM 文件。在磁盘组中,Oracle ASM 会为数据库文件公开文件系统接口。
下图显示了使用 Oracle ASM 的数据库中的存储组件之间的关系。该图描述了 Oracle ASM 文件与数据文件之间的关系,尽管 Oracle ASM 可以存储其他类型的文件。鸦脚的表示法表示一对多关系。
图 2:Oracle ASM 组件

图 14-2 说明了以下 Oracle ASM 概念:
-
Oracle ASM 磁盘
Oracle ASM 磁盘是预配到 Oracle ASM 磁盘组的存储设备。Oracle ASM 磁盘可以是物理磁盘或分区、存储阵列中的逻辑单元号 (Logical Unit Number,LUN)、逻辑卷或网络连接的文件。
数据库正在运行时,可以在磁盘组中添加或删除 Oracle ASM 磁盘。将磁盘添加到磁盘组时,可以指定磁盘名称,也可以自动为磁盘指定 Oracle ASM 磁盘名称。
-
Oracle ASM 磁盘组
Oracle ASM 磁盘组是作为逻辑单元管理的 Oracle ASM 磁盘的集合。磁盘组中的数据结构是自包含的数据结构,并占用磁盘组中的一些磁盘空间。
在磁盘组中,Oracle ASM 会为 Oracle 数据库文件公开文件系统接口。存储在磁盘组中的文件的内容均匀分布或条带化,以消除热点并在磁盘中提供统一的性能。
-
Oracle ASM 文件
Oracle ASM 文件是存储在 Oracle ASM 磁盘组中的文件。Oracle AI Database 在文件方面与 Oracle ASM 通信。数据库可以将数据文件、控制文件、联机重做日志文件和其他类型的文件存储为 Oracle ASM 文件。当数据库请求时,Oracle ASM 会创建一个 Oracle ASM 文件,并为其分配一个名称,该名称以加号 (
+) 开头,后跟一个磁盘组名称,如+DISK1中所示。注:Oracle ASM 文件可以与其他存储管理选项(例如第三方文件系统)共存。此功能简化了 Oracle ASM 与现有环境的集成。
-
Oracle ASM 区
Oracle ASM 区是 Oracle ASM 文件的一部分。Oracle ASM 文件由一个或多个文件区组成。每个 Oracle ASM 区由特定磁盘上的一个或多个分配单元组成。
-
Oracle ASM 分配单元
Oracle ASM 分配单元是磁盘组中分配的基本单元。分配单元是 Oracle ASM 分配的最小连续磁盘空间。一个或多个分配单元构成一个 Oracle ASM 区。
另请参阅:Oracle Automatic Storage Management Administrator’s Guide 以了解有关 Oracle ASM 的更多信息
Oracle ASM 实例
Oracle ASM 实例是管理 Oracle ASM 磁盘的特殊 Oracle 实例。
Oracle ASM 和数据库实例都需要对 Oracle ASM 磁盘组中的磁盘进行共享访问。Oracle ASM 实例管理磁盘组的元数据并向数据库实例提供文件布局信息。数据库实例无需通过 Oracle ASM 实例即可将 I/O 定向到 Oracle ASM 磁盘。
Oracle ASM 实例采用与数据库实例相同的技术构建。例如,Oracle ASM 实例具有系统全局区 (system global area,SGA) 和后台进程,这些进程与数据库实例的进程类似。但是,Oracle ASM 实例无法装载数据库,并且执行的任务比数据库实例少。图 14-3 显示了具有一个 Oracle ASM 实例和两个数据库实例的单节点配置,每个实例都与不同的单实例数据库关联。Oracle ASM 实例管理元数据并为存储两个数据库数据的 Oracle ASM 文件提供空间分配。一个 Oracle ASM 磁盘组具有四个 Oracle ASM 磁盘,另一个具有两个磁盘。两个数据库实例都可以访问磁盘组。
图 3:Oracle ASM 实例和数据库实例

另请参阅:Oracle Automatic Storage Management Administrator’s Guide 以了解有关 Oracle ASM 的更多信息
Oracle Persistent Memory Filestore(PMEM 归档存储)
PMEM 是可字节地址的持久性内存。Oracle Persistent Memory Filestore (PMEM Filestore) 可以存储数据文件、联机重做日志文件和控制文件。
查询可以直接从 PMEM 读取字节,而无需先将块迁移到数据库缓冲区高速缓存。这种高性能机制可避免数据冗余和不必要的 I/O。注: PMEM 文件存储无法存储跟踪文件、审计文件或服务器参数文件。PMEM 支持的文件类型与 Oracle ASM 的类型类似。
-
直接映射的缓冲区高速缓存在传统的存储金字塔中,PMEM 位于 DRAM(非持久性)和 Flash(持久性)(非易失性)之间。
-
File System Interface for PMEM Filestore PMEM Filestore 在用户空间 (Userspace,FUSE) 中实施名为 Filesystem 的协议。
-
PMEM Filestore 的用户界面要创建 PMEM filestore,请使用
CREATE PMEM FILESTORE命令。
直接映射的缓冲区高速缓存
在传统的存储金字塔中,PMEM 位于 DRAM(非持久性)和 Flash(持久性(非易失性)之间。
图 4:存储金字塔

数据库缓冲区高速缓存位于 DRAM 中。Oracle 进程对 PMEM 归档存储中的块具有可直接字节地址的访问权限,这些块映射到数据库缓冲区高速缓存。将数据文件放在 PMEM 文件存储中时,将自动调用映射机制。
Oracle AI Database 使用内部算法来决定是否将数据块从 PMEM 文件存储迁移到 DRAM。迁移的典型原因包括 DML 修改、读取一致性和对热数据块的更快访问。
另请参见:“ DRAM 和 PMEM 缓冲区”
PMEM Filestore 的文件系统接口
PMEM Filestore 在用户空间 (Userspace,FUSE) 中实施名为 Filesystem 的协议。
FUSE 支持非特权操作系统用户(例如 Oracle AI Database 软件所有者)创建和管理文件系统及其中的目录和文件。例如,可以使用命令 cp、rm 和 ls。
典型的文件系统使用原始存储作为其后备存储,而 PMEM Filestore 则从 PMEM DAX 文件系统中的本机操作系统文件获取存储。此文件称为备份文件,在操作系统中作为文件可见。PMEM Filestore 将备份文件中的存储细分,并将其显示为本地文件系统。
另请参见:
- Oracle AI Database Administrator’s Guide,了解有关 PMEM Filestore 的更多信息
PMEM Filestore 的用户界面
要创建 PMEM 文件存储,请使用 CREATE PMEM FILESTORE 命令。
PMEM 文件存储将在创建后自动挂载。PMEM 文件存储显示在指定的挂载点下,就好像它是本机文件系统一样。
PMEM_FILESTORE 初始化参数指定数据库实例在启动时自动挂载的 PMEM 文件存储。该参数设置为有序的字符串对。参数值列表中的第一个字符串是挂载 PMEM Filestore 的目录。第二个字符串是备份文件。
V$PMEM_FILESTORE 显示有关 PMEM 文件存储的元数据。例如,您可以查看挂载点的目录路径、备份文件的文件路径以及文件存储大小。
另请参阅:Oracle AI Database Administrator’s Guide,了解如何创建和管理 PMEM 文件存储
数据文件概览
在操作系统级别,Oracle AI Database 将数据存储在称为数据文件的结构中。每个 Oracle 数据库(无论是 CDB 还是 PDB)必须至少有一个数据文件。
-
使用数据文件 Oracle AI Database 将表空间数据物理存储在数据文件中。
-
永久和临时数据文件 永久表空间包含持久方案对象。永久表空间中的对象存储在数据文件中。
-
联机和脱机数据文件 每个数据文件都处于联机(可用)或脱机(不可用)状态。
-
数据文件结构 Oracle AI Database 通过分配指定的磁盘空间量加上数据文件标头的开销,为表空间创建数据文件。运行 Oracle AI Database 的操作系统负责清除文件中的旧信息和授权,然后再将其分配给数据库。
使用数据文件
Oracle AI Database 以物理方式将数据表空间数据存储在数据文件中。
每个未分区的方案对象和对象的每个分区都存储在各自的段中,该段仅属于一个表空间。例如,未分区表的数据存储在一个段中,而该段又存储在一个表空间中。表空间与数据文件密切相关,但二者明显不同:
-
每个表空间由一个或多个数据文件组成,这些数据文件符合运行 Oracle AI Database 的操作系统。
-
数据库的数据集中存储在位于数据库每个表空间的数据文件中。
-
段可以跨越一个或多个数据文件,但是不能跨越多个表空间。
-
CDB 必须具有
SYSTEM和SYSAUX表空间。CDB 中的每个 PDB 都有自己的SYSTEM和SYSAUX表空间。在创建数据库期间,Oracle AI Database 会自动为SYSTEM表空间分配任何数据库的第一个数据文件。SYSTEM表空间包含数据字典,即:一组包含数据库元数据的表。 通常,数据库也有撤消表空间和临时表空间(通常名为TEMP)。
下图显示了表空间、数据文件和段之间的关系。
图 5:数据文件和表空间

另请参见:
永久和临时数据文件
永久表空间包含持久性方案对象。永久表空间中的对象存储在数据文件中。
临时表空间仅在会话持续期间适用方案对象。本地管理的临时表空间具有临时文件(临时文件),临时文件是用于以散列、排序和其他操作存储数据的特殊文件。内存中空间不足时,临时文件还会存储结果集数据。
临时文件与永久数据文件类似,但以下情况除外:
-
永久性数据库对象(如表)从不存储在临时文件中。
-
临时文件始终设置为
NOLOGGING模式,这意味着它们从未为其生成重做。介质恢复无法识别临时文件。 -
您不能将临时文件设为只读。
-
不能使用
ALTERDATABASE语句创建临时文件。 -
创建或调整临时文件大小时,不能始终保证为指定的文件大小分配磁盘空间。在 Linux 和 UNIX 等文件系统上,临时文件创建为稀疏文件。在这种情况下,不会在文件创建或调整大小时分配磁盘块,而是因为第一次访问这些块。
注:稀疏文件允许快速创建临时文件并调整大小;但是,在以后访问临时文件时,磁盘可能会耗尽空间。
-
临时文件信息显示在数据字典视图
DBA_TEMP_FILES和动态性能视图V$TEMPFILE中,但不显示在DBA_DATA_FILES或V$DATAFILE视图中。
另请参见:
-
Oracle AI Database Administrator’s Guide,了解如何管理临时文件
联机和脱机数据文件
每个数据文件要么是联机(可用)要么是脱机(不可用)。
您可以通过将单个数据文件或临时文件脱机或联机来更改这些文件的可用性。数据库在联机之前无法访问脱机数据文件。
您可以出于多种原因使数据文件脱机,包括执行脱机备份或块损坏。如果数据库无法写入数据文件,则数据库会自动使数据文件脱机。
与数据文件一样,表空间本身处于脱机或联机状态。在联机表空间中使数据文件脱机时,表空间本身将保持联机状态。通过使表空间本身脱机,可以使表空间的所有数据文件暂时不可用。
从 Oracle Database 12c 开始,当数据库打开并访问该文件时,可以使用 ALTER DATABASE MOVE DATAFILE 语句将联机数据文件从一个物理文件移动到另一个物理文件。您可以使用此技术实现以下目标:
-
将表空间从一种存储类型移到另一种存储类型
-
将不经常访问的数据文件移动到更低成本的存储
-
将表空间设为只读并将其数据文件移动到一次写入存储,例如一次写入多次读取 (WORM) 驱动器
-
将数据库移到 Oracle ASM 中
另请参见:
-
Oracle AI Database Administrator’s Guide,了解如何更改数据文件的可用性
-
Oracle AI Database Administrator’s Guide,了解如何移动联机数据文件
-
Oracle AI Database SQL Language Reference(了解
ALTER DATABASE . . . MOVE DATAFILE)
数据文件结构
Oracle AI Database 通过分配指定的磁盘空间量加上数据文件标头的开销,为表空间创建数据文件。运行 Oracle AI Database 的操作系统负责清除文件中的旧信息和授权,然后再将其分配给数据库。
数据文件头包含有关数据文件的元数据,例如其大小和 checkpoint SCN 。每个头包含一个绝对文件编号(用于唯一标识数据库中的数据文件)和一个相对文件编号(用于唯一标识表空间中的数据文件)。
Oracle AI Database 首次创建数据文件时,分配的磁盘空间将进行格式化,但不包含任何用户数据。但是,数据库会保留空间以保存关联表空间将来段的数据。随着数据在表空间中的增长,Oracle AI Database 将使用数据文件中的空闲空间为段分配区。
下图说明了数据文件中不同类型的空间。使用区,这意味着它们包含段数据,或者是空闲区,这意味着它们可供重用。随着时间的推移,更新和删除表空间中的对象会创建一段空白空间,而每一部分都不足以供新数据重用。这种类型的空闲空间称为碎片化空闲空间。
图 6:数据文件中的空间

另请参阅:Oracle AI Database Administrator’s Guide 以了解如何查看数据文件信息
概述控制文件
数据库控制文件是仅与一个 CDB 关联的小型二进制文件。
每个 CDB 都有一个唯一的控制文件,但允许多个相同的副本。PDB 没有单独的控制文件。
-
使用控制文件 Oracle AI Database 使用控制文件查找数据库文件并通常管理数据库的状态。
-
多个控制文件 Oracle AI Database 支持并发打开多个相同的控制文件并将其写入同一数据库。通过在不同的磁盘上复用控制文件,数据库可以实现冗余,从而避免单点故障。
-
控制文件结构 有关数据库的信息存储在控制文件的不同部分中。每个部分都是一组有关数据库某方面的记录。
控制文件的使用
Oracle AI Database 使用控制文件查找数据库文件并通常管理数据库的状态。
控制文件包含如下信息:
-
数据库名称与数据库唯一标识符 (DBID)
-
数据库创建时的时间戳
-
数据文件、联机重做日志文件和归档重做日志文件的相关信息
-
表空间信息
-
RMAN 备用
控制文件用于以下目的:
-
它包含有关打开数据库所需的数据文件、联机重做日志文件等的信息。
控制文件跟踪数据库的结构更改。例如,当管理员添加、重命名或删除数据文件或联机重做日志文件时,数据库将更新控制文件以反映此更改。
-
它包含数据库打不开时必须可以访问的元数据。
例如,控制文件包含恢复数据库所需的信息,包括检查点。检查点指示重做流中需要开始实例恢复的 SCN 。保证在检查点 SCN 之前提交的每个更改都保存在数据文件中的磁盘上。检查点进程至少每三秒会在控制文件中记录一次有关联机重做日志中检查点位置的信息。
Oracle AI Database 在数据库使用期间持续读取和写入控制文件,并且每次打开数据库时都必须可供写入。例如,恢复数据库涉及从控制文件读取数据库中包含的所有数据文件的名称。其他操作(如添加数据文件)更新存储在控制文件中的信息。
另请参见:
-
“实例恢复概览”
-
“检查点进程 (CKPT) ”
-
Oracle AI Database Administrator’s Guide,了解如何管理控制文件
多个控制文件
Oracle AI Database 支持并发打开多个相同的控制文件并将其写入同一数据库。通过在不同的磁盘上复用控制文件,数据库可以实现冗余,从而避免单点故障。注:Oracle 建议您维护多个控制文件副本,每个副本位于不同的磁盘上。
如果控制文件变得不可用,则数据库实例在尝试访问损坏的控制文件时会失败。如果存在其他当前控制文件副本,则可以重新挂载数据库并在不使用介质恢复的情况下将其打开。但是,如果数据库的 all 控制文件丢失,则数据库实例将失败,需要介质恢复。如果必须使用控制文件的较早备份,因为当前副本不可用,则介质恢复并不简单。
另请参见:
-
Oracle AI Database Administrator’s Guide,了解如何维护多个控制文件
-
Oracle AI Database Backup and Recovery User’s Guide,了解如何备份和恢复控制文件
控制文件结构
有关数据库的信息存储在控制文件的不同部分中。每个部分都是一组有关数据库某方面的记录。
例如,控制文件中的一个部分跟踪数据文件并包含一组记录,每个数据文件一个。每个节都存储在多个逻辑控制文件块中。记录可以跨区段中的块。
控制文件包含以下类型的记录:
-
循环重复使用记录
循环重用记录包含有资格根据需要覆盖的非关键信息。当所有可用的记录插槽都已满时,数据库要么扩展控制文件,为新记录腾出空间,要么覆盖最早的记录。示例包括有关归档重做日志文件和 RMAN 备份的记录。
-
非循环重用记录
非循环重用记录包含不经常更改且无法覆盖的关键信息。信息示例包括表空间、数据文件、联机重做日志文件和重做线程。除非从表空间中删除了相应的对象,否则 Oracle AI Database 永远不会重用这些记录。
可以查询动态性能视图(也称为 V$ 视图)以查看存储在控制文件中的信息。例如,可以查询 V$DATABASE 来获取数据库名称和 DBID。但是,只有数据库可以修改控制文件中的信息。
读取和写入控制文件块与读取和写入数据块不同。对于控制文件,Oracle AI Database 会直接从磁盘读取和写入程序全局区 (program global area,PGA)。每个进程为其控制文件块分配一定量的 PGA 内存。
另请参见:
-
“动态性能视图概览”
-
Oracle AI Database Reference,了解
V$CONTROLFILE_RECORD_SECTION视图 -
Oracle AI Database Reference,了解
CONTROL_FILE_RECORD_KEEP_TIME初始化参数
联机重做日志概述
恢复最关键的结构是联机重做日志,该日志由两个或多个预分配文件组成,这些文件在发生更改时存储对数据库的更改。联机重做日志记录对数据文件的更改。
-
使用联机重做日志 数据库维护联机重做日志文件以防止数据丢失。具体而言,在实例发生故障后,联机重做日志文件使 Oracle AI Database 能够恢复尚未写入数据文件的已提交数据。
-
Oracle AI Database 如何写入联机重做日志 数据库实例的联机重做日志称为重做线程。
-
联机重做日志的结构 联机重做日志文件包含重做记录。
联机重做日志的使用
数据库维护联机重做日志文件以防止数据丢失。具体而言,在实例发生故障后,联机重做日志文件使 Oracle AI Database 能够恢复尚未写入数据文件的已提交数据。
服务器进程将每个事务同步写入重做日志缓冲区,然后 LGWR 进程将它写入联机重做日志。联机重做日志的内容包括未提交的事务处理以及方案和对象管理语句。
当数据库对还原段进行更改时,数据库还会将这些更改写入联机重做日志。因此,联机重做日志始终包含永久对象的还原数据。可以将数据库配置为将临时对象的所有还原数据存储在临时还原段中,这样可以节省空间并提高性能,或者允许数据库将永久和临时还原数据存储在联机重做日志中。
Oracle AI Database 仅使用联机重做日志进行恢复。但是,管理员可以通过 Oracle LogMiner 实用程序中的 SQL 界面查询联机重做日志文件。重做日志文件是有关数据库活动的历史信息的有用来源。
另请参见:
-
“实例恢复概览”
-
“临时还原段”
-
“流程架构”了解 Oracle 流程
-
Oracle AI Database Reference,了解
TEMP_UNDO_ENABLED初始化参数
Oracle AI Database 如何写入联机重做日志
数据库实例的联机重做日志称为重做线程。
在单实例配置中,只有一个实例访问数据库,因此仅存在一个重做线程。但是,在 Oracle Real Application Clusters (Oracle RAC) 配置中,多个实例同时访问一个数据库,每个实例都有自己的重做线程。每个实例的单独重做线程可避免对一组联机重做日志文件进行争用。
联机重做日志由两个或多个联机重做日志文件组成。Oracle AI Database 至少需要两个文件,以保证在清除或归档另一个文件时,一个文件始终可供写入。
-
联机重做日志切换 Oracle AI Database 一次仅使用一个联机重做日志文件来存储从重做日志缓冲区写入的记录。
-
多份联机重做日志文件 Oracle AI Database 可以在不同的位置自动维护联机重做日志的两个或多个相同副本。
-
归档重做日志文件 归档重做日志文件是联机重做日志组的填充成员的副本。
另请参阅:Oracle Real Application Clusters Administration and Deployment Guide 以了解 Oracle RAC 中的联机重做日志组
联机重做日志切换
Oracle AI Database 一次仅使用一个联机重做日志文件来存储从重做日志缓冲区写入的记录。
日志写进程 (log writer process,LGWR) 进程正在写入的联机重做日志文件称为当前联机重做日志文件。
当数据库停止向一个联机重做日志文件写入并开始向另一个联机重做日志文件写入时,会发生 log switch 。通常,当当前联机重做日志文件已满并且必须继续写入时会发生切换。但是,您可以将日志切换配置为定期执行,而不管当前联机重做日志文件是否已填充,并手动强制执行日志切换。
日志写进程循环写入到联机重做日志文件。日志写进程填充最后一个可用的联机重做日志文件时,该进程将写入第一个日志文件,然后重新启动循环。图 14-7 说明了重做日志的循环写入。
图 7:联机重做日志文件的重用

Figure 14-7 中的数字显示了 LGWR 写入每个联机重做日志文件的顺序。当日志切换和日志写进程开始向每个文件写入时,数据库会为每个文件分配一个新的日志序列号。数据库重用联机重做日志文件时,此文件会收到下一个可用的日志序列号。
根据归档模式,填充的联机重做日志文件可供重用:
-
如果归档处于禁用状态(即数据库处于
NOARCHIVELOG模式),则在 database writer (DBW) 对其中记录的更改进行检查(写入)到磁盘后,将提供填充的联机重做日志文件。 -
如果启用了归档,这意味着数据库处于 ARCHIVELOG 模式,则在将更改写入到数据文件并归档文件后,已填充的联机重做日志文件可供日志写进程使用。
在某些情况下,日志写进程可能会被阻止重用现有的联机重做日志文件。实例恢复需要活动联机重做日志文件,其中,实例恢复不需要非活动联机重做日志文件。此外,联机重做日志文件可能正在清除。
另请参见:
-
“后台流程概述”
-
Oracle AI Database Administrator’s Guide,了解如何管理联机重做日志
联机重做日志文件的多个副本
Oracle AI Database 可以在不同位置自动维护联机重做日志的两个或多个相同副本。
联机重做日志组由联机重做日志文件及其冗余副本组成。每个相同的副本都是联机重做日志组的成员。每个组都由一个数字进行定义,如组 1、组 2 等。
维护联机重做日志组的多个成员可以防止重做日志丢失。理想情况下,成员的位置应位于单独的磁盘上,以便一个磁盘的故障不会导致整个联机重做日志丢失。
在图 14-8 中,A_LOG1 和 B_LOG1 是组 1 的相同成员,而 A_LOG2 和 B_LOG2 是组 2 的相同成员。组中的每个成员必须具有相同的大小。LGWR 并发写入组 1(成员 A_LOG1 和 B_LOG1),然后并发写入组 2(成员 A_LOG2 和 B_LOG2),然后写入组 1,依此类推。LGWR 永远不会同时写入到不同组的成员。
图 8:联机重做日志文件的多个副本

注:Oracle 建议对联机重做日志进行多图复用的操作。如果需要恢复,则丢失日志文件可能是灾难性的。对联机重做日志进行多图复用时,数据库必须增加其所执行的 I/O 量。根据您的系统,此附加 I/O 可能会影响整体数据库性能。
另请参见:
-
Oracle AI Database Administrator’s Guide,了解如何维护联机重做日志文件的多个副本
-
Oracle Data Guard Concepts and Administration,了解 Data Guard 配置成员之间的重做数据自动传输
归档重做日志文件
归档重做日志文件是联机重做日志组的填充成员的副本。
归档重做日志文件不被视为数据库的一部分。相反,它是数据库创建并写入到用户指定位置的联机重做日志文件的脱机副本。
归档重做日志文件是备份和恢复策略的关键部分。可以使用归档重做日志文件执行以下操作:
-
恢复数据库备份
-
更新备用数据库
-
使用 Oracle LogMiner 实用程序获取有关数据库历史记录的信息
生成归档重做日志文件的操作称为归档。此操作为自动或手动操作。仅当数据库处于 ARCHIVELOG 模式时才可以。
归档重做日志文件包括联机重做日志组的相同成员的重做条目和日志序列号。在 " Multiple Copies of Online Redo Log Files " 中,文件 A_LOG1 和 B_LOG1 是组 1 的相同成员。如果数据库处于 ARCHIVELOG 模式,并且启用了自动归档,则 archiver process (ARCn) 将归档这些文件之一。如果 A_LOG1 已损坏,则进程可以归档 B_LOG1。归档重做日志包含从启用归档开始存在的每个重做日志组的副本。
另请参见:
-
Oracle AI Database Utilities,了解 Oracle LogMiner
-
Oracle AI Database Administrator’s Guide,了解如何管理归档重做日志
-
Oracle Data Guard Concepts and Administration 了解如何配置备用重做日志归档
联机重做日志的结构
联机重做日志文件包含重做记录。
重做记录由一组更改向量组成,其中每个向量都描述对数据块的更改。例如,更新 employees 表中的薪金会生成重做记录,该记录描述对表的数据段块、还原段数据块和还原段的事务处理表所做的更改。
重做记录具有更改的所有相关元数据,包括以下内容:
-
更改的 SCN 和时间戳
-
生成更改的事务处理的事务处理 ID
-
提交事务处理时的 SCN 和时间戳(如果已提交)
-
进行更改的操作类型
-
已修改数据段的名称和类型
另请参阅:“数据块概述”