文章目录
Oracle 数据库的物理结构主要由数据库区组成,数据库区可以理解为数据库存储数据的实际物理存储空间。它包含多个物理文件和逻辑结构,用于存储数据、日志信息、控制信息等。数据库区的核心部分包括:
1. 数据文件(Data Files)
数据文件是数据库存储区中最重要的物理结构,用于存储数据库的实际数据。每个表、索引、视图等对象的数据都保存在这些数据文件中。
- 段(Segment):段是数据库中存储特定类型数据的物理存储区域。每种数据库对象(如表、索引、临时段等)都有对应的段。
- 区(Extent):段由多个区组成。每个区由一组连续的数据块构成。数据库会通过分配新的区来扩展段的大小。
- 数据块(Oracle Blocks):数据块是数据文件的最小存储单位。Oracle 数据库通过数据块管理存储空间。块的大小可以通过 DB_BLOCK_SIZE 参数来设置(通常为 8KB)。
数据文件的主要特点:
- 可以跨多个磁盘分布以优化 I/O 性能。
- 数据文件是属于表空间的物理文件,每个表空间可以包含多个数据文件。
2. 控制文件(Control Files)
控制文件是 Oracle 数据库中非常关键的文件,负责存储数据库的元数据信息。每个数据库至少有一个控制文件,通常为了容错性会配置多个控制文件副本。
控制文件包含以下重要信息:
- 数据库名称和数据库唯一标识符(DBID)。
- 数据库的创建时间。
- 数据文件和重做日志文件的名称和位置。
- 数据文件的检查点信息。
- 重做日志的序列号。
- 当前的归档日志信息。
- 控制文件用于维护数据库的一致性,并且在数据库的启动和恢复过程中扮演着关键角色。
3. 重做日志文件(Redo Log Files)
重做日志文件是 Oracle 数据库中用于恢复事务的文件。每次对数据库的更改都会被记录到重做日志文件中,以确保在系统故障或崩溃时,可以通过重做日志恢复数据库。
- 重做日志组:重做日志文件通常被组织成多个日志组(至少两个),每个日志组至少包含一个重做日志成员。这样当一个日志组填满时,Oracle 可以切换到下一个日志组进行日志写入(称为日志切换)。
- 联机重做日志文件:这些文件始终在线,并用于记录数据库的所有更改。每个事务的提交操作会写入重做日志文件。
- 日志写进程(LGWR):负责将重做条目从内存中的重做日志缓冲区写入联机重做日志文件。
重做日志文件是数据库恢复的一部分,帮助数据库在故障后进行实例恢复和介质恢复。
4. 归档日志文件(Archived Redo Log Files)
当数据库处于**归档模式(ARCHIVELOG)**时,Oracle 会将填满的联机重做日志文件复制为归档日志文件。归档日志用于支持数据库恢复到某个时间点的能力。
归档日志文件的特点:
- 存储的是历史事务的日志,通常在进行备份和恢复操作时使用。
- 可以用于完全恢复或不完全恢复数据库。
5. 参数文件(Parameter Files, PFILE 和 SPFILE)
参数文件用于存储数据库实例启动时所需的配置信息,定义了数据库实例运行的各种参数。
- PFILE(Parameter File):是文本文件,可以手动编辑,用于设置数据库的初始化参数。
- SPFILE(Server Parameter File):是二进制文件,支持在线修改参数配置,是 Oracle 数据库的推荐方式。
参数文件中包含了数据库的内存配置、日志文件路径、控制文件路径、各种性能参数(如 SGA 大小、PGA 大小等)。
6. 密码文件(Password File)
密码文件用于存储 Oracle 数据库的特定用户密码,通常是用于授权用户进行数据库管理任务(如 sysdba 用户)。
- SYSDBA 权限:通过密码文件授予管理员用户 SYSDBA 权限,以便执行诸如启动和关闭数据库、恢复数据库等特权操作。
- 密码文件可以配置在服务器端,并且可以限制哪些用户可以使用远程数据库管理工具连接到数据库。
7. 撤销表空间(Undo Tablespace)
撤销表空间用于管理 Oracle 数据库的撤销段(Undo Segments),撤销段存储了每个事务之前的旧数据值,以支持回滚操作、读一致性和数据库恢复。
撤销表空间的主要功能:
- 事务回滚:当用户执行回滚操作时,数据库会从撤销段中读取原始数据。
- 读一致性:当多个用户同时查询数据库时,撤销表空间提供一致的读视图,防止用户读取到正在修改的未提交数据。
- 事务恢复:当系统崩溃或事务失败时,撤销表空间可以帮助数据库恢复未提交的事务。
8. 临时表空间(Temporary Tablespace)
临时表空间用于存储查询操作中生成的临时数据。