Oracle Eygle Redo 与归档机制深度

Oracle Eygle Redo 与归档机制深度

来源:盖国强 (Eygle) / eygle.com 适用版本:Oracle Database 全版本 文档版本:v1.0 / 2026-07-22


1. 概述

Eygle 对 Redo 机制有深度解析[1]。

详细见:Oracle Redo 深度解析Oracle 重做日志 Redo Log 机制详解


2. Redo 作用

2.1 核心功能

- 恢复(Recovery)
- 保证持久性
- 事务日志

2.2 Eygle 强调

- Redo 是数据库生命线
- 不可丢失
- 必须保护

3. Redo 结构

3.1 Redo Record

- 变更向量
- 改动描述
- 块地址
- SCN

3.2 Redo Thread

- 单实例:1 个 thread
- RAC:每实例 1 个
- 独立 Redo

3.3 Redo Log Group

- 多个成员
- 镜像
- 高可用

4. LGWR 写入

4.1 触发条件

- COMMIT
- 1/3 满
- 1MB
- 3 秒
- DBWn 写前

4.2 同步

- COMMIT 同步
- 等待 log file sync
- 保证持久

4.3 Eygle 要点

- LGWR 串行写
- 性能关键
- Redo Log 高速磁盘

5. Redo Buffer

5.1 大小

ALTER SYSTEM SET log_buffer=64M SCOPE=SPFILE;

5.2 监控

SELECT name, value FROM v$sysstat 
WHERE name LIKE 'redo%';

5.3 等待

SELECT event, time_waited 
FROM v$system_event 
WHERE event LIKE '%redo%' OR event LIKE '%log file%';

6. Redo Log Group

6.1 配置

ALTER DATABASE ADD LOGFILE GROUP 4 
  ('/u01/redo/redo04a.log', '/u02/redo/redo04b.log') SIZE 200M;

6.2 Eygle 建议

- 至少 3 组
- 多路复用
- 不同磁盘
- 大小足够

6.3 大小

- 30 分钟切换一次
- 监控
- 调整

6.4 切换

ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM ARCHIVE LOG CURRENT;

7. 归档模式

7.1 启用

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

7.2 验证

ARCHIVE LOG LIST;
SELECT log_mode FROM v$database;

7.3 Eygle 强调

- 生产必开归档
- 否则无法在线备份
- 灾难恢复基础

8. ARCH 进程

8.1 数量

ALTER SYSTEM SET log_archive_max_processes=4;

8.2 状态

SELECT process, status FROM v$archive_processes;

8.3 归档路径

ALTER SYSTEM SET log_archive_dest_1='location=/u01/archive';
ALTER SYSTEM SET log_archive_dest_2='location=/u02/archive';

9. 归档监控

9.1 路径状态

SELECT dest_id, status, error 
FROM v$archive_dest 
WHERE dest_id <= 2;

9.2 序列

SELECT max(sequence#) FROM v$archived_log;
SELECT max(sequence#) FROM v$log;

9.3 Eygle 检查

- 归档正常
- 序列连续
- 无错误

10. 常见问题

10.1 ORA-00257

- 归档空间满
- 清理
- 扩容

详细见:Oracle 归档日志满处理

10.2 log file switch

- Redo Log 太小
- 加大
- 监控

10.3 log file sync

- COMMIT 慢
- Redo Log I/O
- 优化

10.4 ORA-00312 / ORA-00313

- Redo Log 丢失
- 不完全恢复
- 谨慎

11. Redo 性能

11.1 Redo Log 优化

- 高速磁盘
- 独立
- 大小足够

11.2 LOG_BUFFER

- 适当大小
- 监控等待

11.3 COMMIT 优化

- 事务级
- 批量
- NOWAIT(慎用)

12. 备份归档

12.1 RMAN

RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;
RMAN> BACKUP ARCHIVELOG FROM TIME 'SYSDATE-1';

12.2 保留

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

12.3 Eygle 建议

- 多重备份
- 异地
- 验证

13. Eygle 案例

13.1 案例:Redo 丢失

- 不完全恢复
- RESETLOGS
- 评估

13.2 案例:归档满

- RMAN 清理
- 扩容
- 监控

13.3 案例:LGWR 慢

- 磁盘 I/O
- Redo Log 优化
- 监控

14. 最佳实践

  1. 归档模式:必开
  2. 多路 Redo:每组 2+
  3. 大小:30 分钟切换
  4. 高速磁盘:独立
  5. 归档空间:足够
  6. 监控:序列、错误
  7. RMAN 备份:归档
  8. 多重:异地
  9. 演练:故障
  10. 原理:理解

15. 参考资料

[1] Eygle, “Redo 与归档机制”, https://www.eygle.com [2] 盖国强, 《深入解析 Oracle》