Oracle体系结构-归档日志文件(Archive Log Files)
核心概念:什么是归档日志文件?
- 定义: 归档日志文件(Archive Log Files)是在线重做日志文件(Online Redo Log Files)在被覆盖之前的一个完整副本。它们由 Oracle 的后台进程
ARCn
(归档进程)自动或按需创建。 - 来源: 当在线重做日志组被写满(通过
LOG_ARCHIVE_MAX_PROCESSES
设置)或发生日志切换(手动或自动)时,当前活动的在线重做日志文件就变得“非活动”并可被覆盖。在覆盖发生之前,如果数据库处于ARCHIVELOG
模式,ARCn
进程会将该“非活动”的重做日志文件的内容复制到一个或多个指定的目的地(如磁盘目录、ASM磁盘组、备用数据库等),这个复制品就是归档日志文件。 - 目的: 其主要目的是永久保存数据库的所有变更历史记录,超越了有限的在线重做日志组所能保存的时间范围。这使得数据库能够:
- 恢复到过去的任意时间点(Point-in-Time Recovery, PITR)。
- 在数据文件介质损坏(如磁盘故障)后进行完全恢复(Complete Recovery)。
- 支持备用数据库(Data Guard)的持续同步。
- 支持更高效的增量备份策略(RMAN)。
一、 原理 (Principle)
重做机制基础:
- Oracle 使用“写前日志”(Write-Ahead Logging, WAL)机制保证数据的一致性和可恢复性。
- 任何对数据库的修改(DML, DDL, DCL)在写入数据文件之前,首先会生成对应的“重做记录”(Redo Record),并写入内存中的 重做日志缓冲区(Redo Log Buffer)。
- LGWR(Log Writer)进程负责在特定条件下(提交时、日志缓冲区满1/3、每3秒、DBWn写脏块前等)将重做日志缓冲区的内容刷新到在线重做日志文件(Online Redo Log Files) 中。
- 在线重做日志文件是循环使用的:通常由多个组(至少2组)构成,当一个组写满后,LGWR 切换到下一个组。这个切换动作称为日志切换(Log Switch)。
ARCHIVELOG
vs.NOARCHIVELOG
模式:NOARCHIVELOG
模式: 当发生日志切换时,旧的、非活动的在线重做日志文件可以被 LGWR 直接覆盖重用。不生成归档日志。数据库只能恢复到上一次完整备份(冷备份或一致的热备份)的时间点。无法进行 PITR 或持续同步备用数据库。仅适用于非关键、可丢失数据的测试或开发环境。ARCHIVELOG
模式: 当发生日志切换时,数据库不会立即覆盖刚变为非活动的在线重做日志文件。它会触发ARCn
进程(如果配置了多个归档进程)将这个文件的内容复制(归档)到一个或多个预设的目的地。只有在该文件被成功归档后,LGWR 才能再次覆盖使用这个日志组。这确保了重做历史的连续性得以永久保存。
归档进程 (
ARCn
):- 负责执行实际的归档操作。可以配置多个归档进程 (
ARC0
,ARC1
, ...ARC9
,ARCa
, ...ARCt
) 以提高归档吞吐量和并行度(通过LOG_ARCHIVE_MAX_PROCESSES
参数)。 - 监听日志切换事件。
- 识别需要归档的非活动在线重做日志文件。
- 读取该文件的内容。
- 将内容写入到配置的归档目标(
LOG_ARCHIVE_DEST_n
)。 - 在控制文件和相关的数据字典视图(如
V$ARCHIVED_LOG
)中记录归档日志文件的详细信息(序列号、线程号、时间戳、大小、完成时间、目标位置、文件名等)。 - 标记该在线重做日志文件为“已归档”,允许 LGWR 后续覆盖它。
- 负责执行实际的归档操作。可以配置多个归档进程 (
归档日志序列 (Sequence):
- 每个成功生成的归档日志文件都会被赋予一个唯一的、单调递增的序列号。
- 序列号在数据库实例的生命周期内连续增长,即使数据库重启也不会重置(不同于在线重做日志的循环)。
- 序列号是恢复操作的关键标识符,用于按顺序应用归档日志。
V$LOG_HISTORY
和V$ARCHIVED_LOG
视图记录了序列号信息。
时间线 (Timeline):
- 在 Data Guard 环境或执行了不完全恢复(如
OPEN RESETLOGS
)后,数据库会开启一个新的时间线(Timeline)。 - 归档日志文件名或内部信息会包含时间线标识符(通常是一个数字后缀)。
- 时间线确保了不同历史分支(例如主库时间线1,备库故障切换后成为新主库开启时间线2)的归档日志不会混淆,恢复时能精确找到正确分支上的日志。
- 在 Data Guard 环境或执行了不完全恢复(如
二、 特性 (Characteristics)
- 连续性 (Continuity): 归档日志序列必须是连续的。缺失任何一个序列号的归档日志都会导致后续的恢复操作无法进行(直到缺失点)。
V$ARCHIVED_LOG
视图的SEQUENCE#
和THREAD#
列可用于验证连续性。 - 只读性 (Read-Only): 一旦生成,归档日志文件的内容就固定不变,具有只读属性。
- 命名规范 (Naming Convention): 文件名通常遵循特定格式(可通过
LOG_ARCHIVE_FORMAT
参数自定义),默认格式通常包含:%t
: 线程号(Thread number),在RAC环境中重要。%s
: 日志序列号(Log sequence number)。%r
: 重置日志ID(Resetlogs ID),在OPEN RESETLOGS
后改变,用于区分时间线(在文件名中隐含时间线信息,或直接使用%T
表示时间线)。- 例如:
LOG_ARCHIVE_FORMAT = 'arch_%t_%s_%r.arc'
可能生成arch_1_100_1234567890.arc
。
- 目的地 (Destinations): 归档日志可以写入多个本地或远程目的地,提供冗余和容灾能力。使用
LOG_ARCHIVE_DEST_n
(n=1..31) 参数配置(取代旧的LOG_ARCHIVE_DEST
和LOG_ARCHIVE_DUPLEX_DEST
)。- 本地磁盘目录 (
LOCATION=
)。 - ASM 磁盘组 (
LOCATION=+DISKGROUP/...
)。 - 远程备用数据库 (
SERVICE=
)。 - 可以设置状态 (
STATUS=ENABLE|DEFER|ALTERNATE
)、有效性 (VALID_FOR=...
)、是否强制 (MANDATORY|OPTIONAL
) 等属性。
- 本地磁盘目录 (
- 压缩 (Compression): 从 Oracle 10g R2 开始,支持在归档时对日志进行压缩(通过
ALTER SYSTEM SET LOG_ARCHIVE_COMPRESSION=ENABLE
),显著节省存储空间,但会增加少量 CPU 开销。压缩算法可通过LOG_ARCHIVE_COMPRESSION_ALGORITHM
选择。 - 加密 (Encryption): 如果数据库配置了透明数据加密(TDE),归档日志可以使用相同的加密密钥进行加密(通过
ALTER SYSTEM SET LOG_ARCHIVE_ENCRYPTION=ENABLE
),增强静态数据的安全性。 - 分片 (Splitting): 单个非常大的在线重做日志文件归档时,可以自动分割成多个更小的归档日志文件片段(通过设置
LOG_ARCHIVE_MIN_SUCCEED_DEST
和LOG_ARCHIVE_DEST_n
的MAX_FAILURE
属性,并结合LOG_ARCHIVE_FORMAT
),便于传输和管理。 - 延迟应用 (Deferred Apply - Data Guard): 在物理备用数据库上,可以配置延迟应用归档日志,用于在逻辑错误发生后有时间进行补救。
- 12c+ 多租户 (Multitenant): 在 CDB 环境中,归档日志文件包含整个 CDB 和所有 PDB 的重做信息。
V$ARCHIVED_LOG
视图在 CDB$ROOT 中显示所有容器的归档日志信息,在 PDB 中仅显示与该 PDB 相关的信息(通过CON_ID
列区分)。
三、 作用 (Role & Importance)
数据恢复的基石:
- 完全恢复 (Complete Recovery): 当发生数据文件介质损坏(如磁盘坏道)时,可以使用最近的全量备份(数据文件备份)结合从备份时间点之后生成的所有归档日志文件和应用在线重做日志中的当前更改,将数据库恢复到故障前的状态,实现零数据丢失(前提是归档日志和在线日志完整)。RMAN 自动管理这个过程。
- 时间点恢复 (Point-in-Time Recovery, PITR): 可以精确地将数据库(整个数据库、特定表空间或特定数据文件)恢复到过去的任意一个时间点(SCN 或时间戳)。这对于:
- 撤销用户误操作(如
DROP TABLE
,TRUNCATE TABLE
, 错误的大批量更新)。 - 撤销逻辑数据损坏。
- 满足法规要求(恢复到审计点)。
- 创建测试环境快照。PITR 完全依赖归档日志文件来“回放”或“前滚”到指定的精确时间点。
- 撤销用户误操作(如
- 不完全恢复 (Incomplete Recovery): 当无法获得完整的归档日志序列(如丢失了某个日志文件)或需要故意停止在某个特定点(如 PITR)时进行的恢复。恢复完成后需要使用
OPEN RESETLOGS
打开数据库,这会重置日志序列并开始一个新的时间线。
高可用性与容灾 (Data Guard):
- 归档日志文件是 Oracle Data Guard 技术的生命线。在主库(Primary Database)生成的归档日志文件会被传输(Ship)到一个或多个物理备用数据库(Physical Standby)或逻辑备用数据库(Logical Standby)。
- 在物理备库上,RFS(Remote File Server)进程接收归档日志,MRP(Managed Recovery Process)进程应用这些日志,使备库与主库保持物理块级别的一致。物理备库可以随时切换(Switchover)或故障转移(Failover)为主库。
- 在逻辑备库上,LSP(Logical Standby Process)进程解析归档日志中的 SQL 语句并在备库上执行,使备库保持逻辑一致。逻辑备库可以在应用日志的同时保持只读打开状态用于报表查询。
- 归档日志的连续、可靠传输和应用是实现数据零丢失(Zero Data Loss)保护(如
SYNC
/FASTSYNC
传输模式与实时应用)和最小化数据丢失(ASYNC
模式)的关键。
高效的备份策略 (RMAN):
- 增量备份的基础: RMAN 的增量备份(Incremental Backups)依赖于归档日志。增量备份只捕获自上次备份(全量或增量)以来发生变化的数据块。为了将增量备份应用到基础备份上以创建一个新的完整映像副本(Image Copy),或者在恢复时应用增量备份,RMAN 需要归档日志文件来确保数据块的一致性(解决“模糊块”问题)。
- 增量更新备份: 结合增量备份和归档日志应用,可以实现高效的“增量更新”备份策略,快速创建接近当前的完整数据文件副本。
- 备份归档日志: RMAN 可以备份归档日志文件本身,并在备份后(可选)删除已备份的归档日志文件以释放空间。这是备份策略的重要组成部分,确保拥有恢复所需的完整日志链。
日志挖掘 (LogMiner):
- 使用
DBMS_LOGMNR
包可以解析在线或归档日志文件的内容,从中提取原始的 SQL 语句(DDL 和 DML)和事务信息。 - 用于:
- 审计用户操作。
- 诊断问题,分析历史变更。
- 执行事务级的回滚(Undo SQL)。
- 逻辑备用数据库的核心技术。
- 使用
流复制 (Streams): (注:Oracle Streams 在 12c 后已过时,被 GoldenGate 取代,但其原理类似) 归档日志是捕获数据库变更(Capture Process)的主要来源之一,用于将变更传播到其他数据库。
四、 故障恢复 (Troubleshooting & Recovery from Issues)
归档日志相关的问题会严重影响数据库的可用性、恢复能力和 Data Guard 的同步。以下是常见故障及其恢复方法:
归档目标空间不足 (
ARCn
进程挂起):- 现象:
ARCn
进程无法将日志写入目标目录(空间满),导致归档失败。数据库挂起所有产生重做的操作(因为 LGWR 无法覆盖未归档的在线日志),表现为应用停滞、用户会话挂起。告警日志 (alert_<SID>.log
) 中会有明确错误信息 (ORA-00257
,ORA-16038
,ARCn: Failed to archive log...
)。 - 恢复:
- 紧急释放空间: 这是最快的方法。连接到数据库主机,清理归档目标目录中旧的、已备份过且不再需要的归档日志文件 (
rm
或使用 OS 命令)。切勿删除尚未归档的在线日志或最新的归档日志! - 增加空间: 如果可能,扩充归档目标磁盘空间(加磁盘、扩文件系统、挂载新目录)。
- 修改/增加目标: 临时添加或修改
LOG_ARCHIVE_DEST_n
参数指向一个有足够空间的位置 (ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/new/large/path'
),并启用它。可能需要重启实例或让参数生效。 - 强制日志切换 (慎用): 在空间释放后,如果
ARCn
没有自动恢复归档,可以尝试手动切换日志 (ALTER SYSTEM SWITCH LOGFILE;
) 来重新触发归档进程。
- 紧急释放空间: 这是最快的方法。连接到数据库主机,清理归档目标目录中旧的、已备份过且不再需要的归档日志文件 (
- 预防: 实施监控告警(空间使用率)、定期删除已备份的旧归档日志(通过 RMAN
DELETE ARCHIVELOG ...
或脚本)、合理规划归档空间大小。
- 现象:
归档日志文件损坏或丢失:
- 现象: 在恢复操作(RMAN 恢复、Data Guard 应用)或 LogMiner 过程中,尝试访问某个归档日志文件时失败,报错如
ORA-00312
,ORA-00313
,ORA-01547
,ORA-19505
,ORA-27037
等,指示文件不存在、不可读、头部损坏、校验和错误等。 - 影响: 灾难性。丢失的归档日志序列之后的恢复操作无法进行。如果该日志是恢复链中必需的,则:
- 完全恢复只能恢复到丢失日志序列号之前的最新 SCN。
- PITR 只能恢复到小于等于该 SCN 的时间点。
- Data Guard 备库会停止应用并报告 GAP。
- 恢复:
- 从备份恢复: 最佳方案。 如果该损坏/丢失的归档日志文件之前已经被 RMAN 备份过,使用 RMAN 将其恢复到原始位置或新位置:
RESTORE ARCHIVELOG SEQUENCE <seq>;
或RESTORE ARCHIVELOG FROM TIME '...';
。然后继续正常的恢复操作。 - Data Guard 主库重传 (仅限物理备库 GAP): 如果是在 Data Guard 环境中发现备库缺失某个日志(GAP),主库可能还保留着该归档日志。可以使用
ALTER DATABASE REGISTER ... LOGFILE
手动注册,或用FAL_CLIENT
/FAL_SERVER
机制(较旧)或RECOVER ... FROM SERVICE
(11g+) 自动/手动补缺口。主库缺失则无法补。 - 从冗余目标恢复: 如果配置了多个归档目标 (
LOG_ARCHIVE_DEST_n
) 且该文件在其他目标上存在且完好,可以将其复制到缺失/损坏的位置(确保文件名和权限正确)。 - 重置日志 (
OPEN RESETLOGS
) - 最后手段: 如果丢失的归档日志是恢复链中不可或缺的(无法从备份或其他地方获取),且必须立即打开数据库,则只能进行不完全恢复到丢失日志之前的 SCN (RECOVER DATABASE UNTIL CHANGE <scn>;
),然后强制用ALTER DATABASE OPEN RESETLOGS;
打开数据库。这会丢弃丢失日志之后的所有数据变更! 这是一个破坏性操作,仅在万不得已时使用。务必在操作前做好全库备份。
- 从备份恢复: 最佳方案。 如果该损坏/丢失的归档日志文件之前已经被 RMAN 备份过,使用 RMAN 将其恢复到原始位置或新位置:
- 预防: 多重冗余! 配置至少两个本地或远程归档目标(如本地磁盘+ASM,或本地+远程备用库)。定期备份归档日志并验证备份。使用 RMAN 验证归档日志的连续性 (
VALIDATE ARCHIVELOG ALL;
) 和可恢复性 (RESTORE ... VALIDATE ARCHIVELOG ...;
)。启用归档日志文件的校验和 (DB_BLOCK_CHECKSUM=TYPICAL/FULL
,对写入日志缓冲区的块也有效)。
- 现象: 在恢复操作(RMAN 恢复、Data Guard 应用)或 LogMiner 过程中,尝试访问某个归档日志文件时失败,报错如
归档进程 (
ARCn
) 故障:- 现象: 归档操作停止。告警日志中有
ARCn
进程异常终止的错误堆栈。在线重做日志无法归档,最终导致数据库活动挂起(同空间不足)。 - 原因: 可能由于 O/S 问题(信号、资源限制)、Oracle Bug、内存冲突、写入目标权限问题、网络问题(远程目标)等。
- 恢复:
- 查看告警日志: 仔细分析错误信息,确定根本原因。
- 检查目标: 确认归档目标目录存在、有足够空间、Oracle 软件所有者(如
oracle
)有读写权限、网络可达(远程目标)。 - 尝试重启
ARCn
: 有时进程崩溃后会自动重启。如果没有,可以尝试手动重启所有归档进程:ALTER SYSTEM ARCHIVE LOG STOP;
(停止所有归档) 然后ALTER SYSTEM ARCHIVE LOG START;
(启动所有归档)。 - 重启数据库实例: 如果重启
ARCn
无效,尝试重启数据库实例 (SHUTDOWN IMMEDIATE; STARTUP;
)。 - 应用补丁/解决 Bug: 如果告警日志指向已知 Bug,应用相应的数据库补丁集或补丁。
- 检查 O/S 资源: 确保没有 O/S 级别的资源限制(如进程数、文件描述符)阻止
ARCn
运行。
- 预防: 保持数据库补丁更新。监控归档进程状态 (
V$ARCHIVE_PROCESSES
)。确保目标配置正确且稳定。
- 现象: 归档操作停止。告警日志中有
归档日志配置错误:
- 现象: 无法切换到
ARCHIVELOG
模式、归档失败、文件名冲突、目标不可访问等。 - 常见错误:
LOG_ARCHIVE_DEST_n
路径不存在或权限不足。LOG_ARCHIVE_FORMAT
设置不当导致文件名冲突或不符合 O/S 规范。- 参数设置冲突(如同时使用
LOG_ARCHIVE_DEST
和LOG_ARCHIVE_DEST_n
)。 DB_RECOVERY_FILE_DEST
(闪回恢复区) 空间不足且LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST'
。
- 恢复:
- 检查参数:
SHOW PARAMETER LOG_ARCHIVE_%
- 检查目标: 验证目录存在、权限正确、空间足够。
- 修正参数: 使用
ALTER SYSTEM SET ... SCOPE=SPFILE;
修正错误的参数设置(通常需要重启生效)。 - 清理闪回恢复区: 如果使用 FRA 作为归档目标且空间不足,使用 RMAN
DELETE OBSOLETE;
或DELETE ARCHIVELOG ALL BACKED UP ... TIMES TO DEVICE TYPE ...;
清理旧备份和归档日志,或者扩大 FRA 大小 (ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=...G;
)。
- 检查参数:
- 现象: 无法切换到
Data Guard 归档日志传输/应用延迟或中断 (GAP):
- 现象: 备库与主库的同步延迟增大 (
V$DATAGUARD_STATS
,V$ARCHIVE_DEST_STATUS
),甚至完全停止应用 (MRP0
/LSP
进程停止,V$MANAGED_STANDBY
显示错误)。 - 原因: 网络中断/拥塞、主库归档慢、备库应用慢、归档日志损坏/丢失(见上)、主备版本/参数不兼容、归档进程问题、存储性能瓶颈、资源竞争等。
- 恢复/诊断:
- 检查告警日志: 主库和备库的告警日志是首要信息来源。
- 检查传输状态: 在主库查
V$ARCHIVE_DEST_STATUS
看目标状态 (STATUS
,ERROR
)、传输延迟 (TRANSPORT_LAG
)、最后成功序列 (LAST_SEQ
/NEXT_SEQ
)。 - 检查应用状态: 在备库查
V$DATAGUARD_STATS
(apply lag
),V$MANAGED_STANDBY
(PROCESS
,STATUS
,SEQUENCE#
,ERROR
)。 - 检查网络: 确保主备之间网络畅通、防火墙允许相关端口(通常是
1521
或自定义监听端口)。 - 解决 GAP: 如前所述,尝试自动或手动补缺口 (
RECOVER ... FROM SERVICE
,ALTER DATABASE REGISTER LOGFILE ...
)。如果 GAP 太大或无法自动解决,可能需要重建备库。 - 优化性能: 分析主库归档、网络传输、备库应用的瓶颈。可能需要调整
LOG_ARCHIVE_MAX_PROCESSES
, 网络带宽、备库PARALLEL
相关参数、I/O 子系统等。
- 预防: 网络冗余与监控、平衡主备负载、监控同步延迟、确保归档和传输稳定高效。
- 现象: 备库与主库的同步延迟增大 (
五、 管理与最佳实践 (Management & Best Practices)
监控:
- 告警日志 (
alert_<SID>.log
): 首要监控点,记录所有归档相关的重要事件和错误。 - 视图:
V$ARCHIVED_LOG
: 已生成的归档日志详细信息(序列号、时间戳、大小、目标、是否已删除、备份状态等)。V$LOG_HISTORY
: 日志切换历史记录。V$ARCHIVE_DEST_STATUS
: 归档目标状态、错误信息、延迟情况。V$ARCHIVE_PROCESSES
: 归档进程状态 (STATUS: BUSY/STOPPED
)。V$DATAGUARD_STATS
(备库): 主备同步延迟。V$MANAGED_STANDBY
(备库): MRP/LSP 进程状态。V$RECOVERY_AREA_USAGE
: 闪回恢复区空间使用详情(如果归档到 FRA)。
- 工具: Enterprise Manager (EM) Cloud Control, Oracle Grid Control, 自定义脚本。
- 告警日志 (
空间管理:
- 规划大小: 根据重做生成速率、备份频率和保留策略(需要保留多少天的归档日志用于恢复和PITR)计算所需空间。预留足够缓冲(至少20-30%)。
- 定期清理: 绝对不要只在操作系统层删除归档日志!必须使用 RMAN 进行删除,因为 RMAN 会同步更新控制文件和恢复目录中的元数据。
DELETE ARCHIVELOG ALL;
- 删除所有归档日志(极其危险!通常不用)。DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7';
- 删除7天前的归档日志。DELETE ARCHIVELOG ALL BACKED UP 2 TIMES TO DEVICE TYPE DISK;
- 删除所有已备份到磁盘至少2次的归档日志。DELETE OBSOLETE;
- 根据配置的保留策略 (CONFIGURE RETENTION POLICY ...
) 删除过期的备份和归档日志。推荐方式。
- 监控告警: 设置空间使用率阈值告警(如 >80%)。
备份:
- 必须备份归档日志! 这是恢复能力的关键环节。
- 在 RMAN 备份脚本中,通常包含
BACKUP ARCHIVELOG ALL DELETE ALL INPUT;
或BACKUP ARCHIVELOG ALL DELETE INPUT;
。前者备份所有归档日志并删除所有输入文件(无论备份到哪里),后者只删除成功备份到指定设备类型的输入文件(更安全)。 - 确保归档日志备份和数据库备份(数据文件、控制文件)一起保留,以满足恢复时间目标(RTO)和恢复点目标(RPO)。
配置最佳实践:
- 始终为生产数据库使用
ARCHIVELOG
模式。 - 配置多重归档目标 (
LOG_ARCHIVE_DEST_n
) 实现冗余(至少本地+远程或本地+本地不同磁盘)。 - 优先使用
LOG_ARCHIVE_DEST_n
(n=1..31) 而非过时的LOG_ARCHIVE_DEST
/LOG_ARCHIVE_DUPLEX_DEST
。 - 合理设置
LOG_ARCHIVE_MIN_SUCCEED_DEST
(最小成功归档目标数,通常设为1,关键系统可设2)。 - 考虑启用归档压缩 (
LOG_ARCHIVE_COMPRESSION
) 节省空间(评估CPU影响)。 - 如果使用 TDE,考虑启用归档加密 (
LOG_ARCHIVE_ENCRYPTION
)。 - 设置清晰合理的 RMAN 保留策略 (
CONFIGURE RETENTION POLICY ...
) 并定期执行DELETE OBSOLETE
。 - 定期验证备份(包括归档日志)的可恢复性 (
RESTORE ... VALIDATE
)。
- 始终为生产数据库使用
RAC 环境:
- 每个实例有自己的线程(
THREAD#
)和在线重做日志组。 - 归档日志文件包含线程号 (
%t
),每个实例的ARCn
进程负责归档本实例的日志。 - 归档目标通常配置在共享存储(如 ASM 或集群文件系统)上,所有实例都能访问。远程目标配置相同。
- 恢复时需要所有实例的归档日志序列(按线程和序列号排序应用)。
- 每个实例有自己的线程(
总结:
归档日志文件是 Oracle 数据库实现数据持久性、高可用性、灾难恢复和灵活恢复能力的核心组件。理解其原理(基于重做机制和 ARCHIVELOG
模式)、特性(连续性、只读性、命名、目的地、压缩加密)、作用(完全恢复/PITR/Data Guard/RMAN备份/LogMiner)以及如何有效管理、监控和应对故障(空间不足、日志损坏丢失、进程故障、配置错误、Data Guard GAP),对于任何负责 Oracle 生产环境稳定运行的 DBA 来说都至关重要。严格遵守最佳实践(启用 ARCHIVELOG
、多重冗余目标、定期备份和清理、有效监控)是保障数据库韧性和满足业务连续性要求的基础。