73-Oracle Archive Log(归档和管理)

Oracle归档日志的功能、管理与优化

小伙伴们是不是重要的库、重要的业务实例都已经且必须开启归档模式的。archive log是数据零丢失保障​:其中归档日志完整记录所有事务变更,确保介质故障时可通过归档日志+在线日志实现完全恢复(如磁盘损坏),避免数据丢失。​同时也是Data Guard实时同步的基础,归档日志实现主备库秒级切换(RPO≈0),支撑RAC集群的故障转移。Data Guard是OCM必考内容。

一、功能特点与技术原理

1. 核心功能
  • 数据恢复与一致性​:归档日志(Archive Log)是重做日志(Redo Log)的历史备份,记录所有事务变更(插入、更新、删除),确保数据库在故障后可通过日志恢复到一致状态。
  • 时间点恢复(PITR)​​:支持恢复到特定时间点,适用于误操作修复。
  • 高可用性支持​:归档日志是Data Guard物理备库同步的基础,实现数据实时复制和灾备切换。
  • 备份与审计​:为RMAN备份提供基础,同时记录变更历史用于合规审计。
2. 技术原理
  • 日志生成与归档流程​:
  1. 重做日志写入​:事务发生时,变更首先写入在线重做日志(Online Redo Log)。
  2. 日志切换与归档​:当在线日志写满后触发切换(ALTER SYSTEM SWITCH LOGFILE),ARCn进程将日志复制到归档目录,生成归档日志(如log_1_123.arc)。
  3. 恢复机制​:故障发生时,通过归档日志+在线日志重做事务,确保数据一致性。
  • 关键组件​:
    • ARCn进程​:专责归档日志生成。
    • 控制文件​:记录归档日志元数据(位置、序列号)。
    • 快速恢复区(FRA)​​:10g起支持集中管理归档日志的存储区域。
3. 归档模式 vs. 非归档模式​ 

​特性​

​归档模式​

​非归档模式​

数据恢复能力

支持时间点恢复、介质恢复

仅支持完全恢复(冷备)

日志处理

在线日志归档后保留

在线日志被覆盖

适用场景

生产环境、高可用要求

测试环境、非关键数据

备份策略

支持增量备份和实时同步

仅支持全量备份

二、版本演进与关键改进

Oracle 8i
  • 初始引入​:基础归档模式支持,需手动管理日志文件。
Oracle 9i
  • 增强RAC支持​:归档日志可共享存储,提升集群可用性。
  • ​LOG_ARCHIVE_DEST_n参数​:支持多目的地归档(本地+远程)。
Oracle 10g
  • 闪回技术(Flashback)​​:依赖归档日志实现行级恢复。
  • 快速恢复区(FRA)​​:自动管理归档日志,空间不足时删除已备份日志。
Oracle 11g
  • 实时应用(Real-Time Apply)​​:备库可直接应用在线日志,减少同步延迟。
  • 压缩归档日志​:减少存储占用(BACKUP AS COMPRESSED ARCHIVELOG)。
Oracle 12c/19c
  • 多租户架构(CDB/PDB)​​:每个PDB独立管理归档策略。
  • 归档日志策略优化​:支持基于冗余策略自动清理(CONFIGURE ARCHIVELOG DELETION POLICY)。

、归档日志文件格式与结构

1. 文件命名规则
  • 格式定义​:归档日志文件名由初始化参数 LOG_ARCHIVE_FORMAT 控制,必须包含以下关键匹配符:
    • - %s:日志序列号(无前导零)
    • - %S:日志序列号(带前导零)
    • - %t:重做线程号(无前导零)
    • - %T:重做线程号(带前导零)
    • - %r:RESETLOGS标识(用于区分不同恢复周期)
  • 示例​:若设置为 log_archive_format = 'arch_%t_%s_%r.arc',则生成文件名如 arch_1_123_114532.arc。
2. 文件内部结构
  • 二进制格式​:归档日志与在线重做日志结构一致,包含重做记录头​(Redo Record Header)和变更向量​(Change Vectors),记录事务修改的物理块地址、旧值/新值等。
  • 头尾标识​:文件头包含日志序列号、数据库ID、时间戳;文件尾包含校验和(Checksum)确保完整性。

、写入机制与内部流程

1. 触发条件
  • 日志切换(Log Switch)​​:当在线重做日志组写满时,触发 ALTER SYSTEM SWITCH LOGFILE,ARCn进程立即启动归档。
  • 强制归档​:可手动执行 ALTER SYSTEM ARCHIVE LOG CURRENT 强制归档当前日志组。
2. ARCn进程工作流程
  • 日志捕获​:ARCn从 v$log 中识别状态为 ACTIVE 或 INACTIVE 的日志组。
  • 文件复制​:将日志组所有成员复制到归档目标(如 /u01/arch),若配置多目标(LOG_ARCHIVE_DEST_n),则并行写入多个位置。
  • 元数据更新​:归档完成后,更新控制文件中的 v$archived_log 视图,记录文件名、序列号、SCN等。
3. 写入优化技术
  • 并行归档​:通过 log_archive_max_processes 增加ARCn进程数(默认2,最大10),提升并发能力。
  • 异步I/O​:启用 DISK_ASYNCH_IO 参数,减少磁盘等待时间。
  • 日志压缩​:Oracle 11g+支持 BACKUP AS COMPRESSED ARCHIVELOG,减少存储占用和I/O压力。

、归档日志管理策略

1. 删除机制
  • 手动删除​:使用RMAN删除指定时间或序列号之前的日志:
RMAN> DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7';  -- 删除7天前日志
RMAN> DELETE ARCHIVELOG SEQUENCE 100;           -- 删除序列号≤100的日志
  • 自动清理​:
    • 快速恢复区(FRA)​​:当空间使用率超85%时,自动删除已备份的旧归档文件。
    • 保留策略​:通过 CONFIGURE RETENTION POLICY TO REDUNDANCY 2; 保留最近2份备份关联的日志。
 2. 关键管理操作​

​操作类型​

​命令/方法​

​查看归档状态​

SELECT dest_name, status FROM v$archive_dest;

​监控空间使用​

SELECT * FROM v$recovery_area_usage;(关注ARCHIVED LOG行)

​跨平台迁移​

RMAN> BACKUP ARCHIVELOG ALL FORMAT '/backup/arch_%U';

​日志损坏修复​

ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;

(重建损坏日志组)

四、各版本管理脚本(已验证)​​

​1. 基础管理脚本(~10g)​​
-- 启用归档模式
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
-- 设置归档位置
ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/arch' SCOPE=SPFILE;
 2. 利用FRA自动管理(Oracle 10g+)​​
-- 启用FRA
ALTER SYSTEM SET db_recovery_file_dest_size=100G;
ALTER SYSTEM SET db_recovery_file_dest='/u01/fra';
-- 检查空间使用
SELECT * FROM V$RECOVERY_AREA_USAGE;
 3. 归档日志清理脚本(Oracle 11g+)​​
#!/bin/bash
# 删除7天前的归档日志(RMAN)
rman target / <<EOF
DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7';
EOF

--结合FRA时,空间使用率超80%自动清理旧日志。
 4. 多租户环境管理(Oracle 12c+)​​
-- PDB级别归档配置
ALTER SESSION SET CONTAINER=freepdb1;
ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/pdb_arch' SCOPE=SPFILE;

五、高效归档最佳实践

1. 存储与I/O优化
  • 分离存储​:将归档目录与数据文件、在线日志分盘存储,避免I/O竞争。
  • 多目标冗余​:配置至少两个本地归档目标(如 LOG_ARCHIVE_DEST_1、LOG_ARCHIVE_DEST_2),并设置 MANDATORY 确保关键日志必归档:
ALTER SYSTEM SET log_archive_dest_1='location=/arch1 MANDATORY';
ALTER SYSTEM SET log_archive_dest_2='location=/arch2 OPTIONAL';
2. 参数调优​ 

​参数​

​推荐值​

​作用​

log_archive_max_processes

4

增加归档进程并行度

log_archive_min_succeed_dest

2

强制至少2个目标归档成功

db_recovery_file_dest_size

实际存储空间80%

避免FRA满导致数据库挂起

、故障处理与监控

1. 常见问题排查
  • 归档停滞​:
    • 原因​:FRA空间满或 LOG_ARCHIVE_DEST_n 不可写。
    • 解决​:扩增FRA大小或清理旧日志:
ALTER SYSTEM SET db_recovery_file_dest_size=200G;  -- 扩展FRA空间
  •  日志损坏​:使用 RMAN> VALIDATE ARCHIVELOG ALL; 校验完整性。
2. 状态监控 
-- 检查归档模式
SELECT log_mode FROM v$database;
-- 查看归档日志序列
SELECT sequence#, first_time FROM v$archived_log ORDER BY sequence# DESC;
-- 监控ARCn进程
SELECT process, status FROM v$archive_processes;
-- SELECT process, status FROM v$archive_processes;

   PROCESS     STATUS
__________ __________
         0 ACTIVE
         1 ACTIVE
         2 ACTIVE
         3 ACTIVE
         4 STOPPED
         5 STOPPED
-- 检查归档积压
SELECT thread#, max(sequence#) OVER (PARTITION BY thread#) last_seq
FROM v$archived_log 
WHERE dest_id=1 AND applied='YES';

-- 实时归档吞吐量
SELECT dest_name, status FROM v$archive_dest_status 
WHERE status <> 'INACTIVE';

七、运维最佳实践

1. 存储规划​
  • 归档目录与数据文件分盘存储,避免I/O竞争。
  • 定期监控FRA使用率(V$RECOVERY_AREA_USAGE)。
--使用RMAN备份归档日志后自动清理:
--删除所有副本
BACKUP ARCHIVELOG ALL DELETE ALL INPUT;
--保留策略设置(例:保留2份备份):
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
--仅删除指定天数前日志​
BACKUP ARCHIVELOG UNTIL TIME 'SYSDATE-7' DELETE ALL INPUT;
3. 故障处理​
  • 归档目录满​:扩展空间或清理旧日志(避免ORA-00257)。
  • 日志损坏​:使用ALTER DATABASE CLEAR LOGFILE GROUP n重建日志组。
3. 使用体验
归档日志的高效管理依赖于 ​多进程并行存储分离自动化清理策略​ 及 ​实时容灾设计
关键要点包括:
  1. 格式规范​:通过 %s/%t/%r 确保文件名唯一性;
  2. 写入优化​:增加ARCn进程、启用压缩与异步I/O;
  3. 删除策略​:结合FRA自动清理与RMAN保留策略避免空间不足;
  4. 高可用​:多目标归档+实时应用最小化数据丢失风险。
TIPS:生产环境需定期验证归档完整性(如 RMAN> RESTORE ARCHIVELOG VALIDATE;)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值