Oracle Redo 传输详解

Oracle Redo 传输详解

适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

Redo 传输是 Data Guard 数据同步基础[1]:

详细见:Oracle Data Guard 架构详解Oracle 保护模式详解


2. 传输方式

2.1 SYNC(同步)

- LGWR 直接传输
- 等待备库确认
- 零丢失
- 延迟

2.2 ASYNC(异步)

- LGWR 异步
- 不等待
- 性能优先
- 可能丢失

2.3 ARCH

- ARCH 进程
- 归档后传输
- 旧方式

3. 进程

3.1 LGWR

- 主库日志写
- SYNC/ASYNC 传输
- 网络

3.2 LNS

- Log Network Server
- 网络传输
- 处理

3.3 RFS

- Remote File Server
- 备库接收
- 写入

3.4 ARCH

- 归档
- 传输
- FAL

4. SYNC 传输

4.1 流程

1. LGWR 写 Online Redo
2. LNS 传输到备库
3. RFS 写 Standby Redo
4. 确认回主库
5. LGWR 完成

4.2 AFFIRM

- 备库写盘确认
- 零丢失
- 延迟

4.3 NOAFFIRM

- 内存确认
- 快
- 风险

5. ASYNC 传输

5.1 流程

1. LGWR 写 Online Redo
2. LNS 异步传输
3. 不等待
4. 备库接收

5.2 优势

- 性能
- 无延迟
- 适合远距离

5.3 风险

- 可能丢失
- 网络故障
- 评估

6. Standby Redo Log

6.1 作用

- 接收 Redo
- 实时应用
- 必备

6.2 创建

ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 
  ('/u01/redo/s04.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 
  ('/u01/redo/s05.log') SIZE 50M;

6.3 数量

- 比主库 Online Redo 多一组
- 或相同
- 监控

7. 参数

7.1 LOG_ARCHIVE_DEST_n

ALTER SYSTEM SET log_archive_dest_2=
  'service=stby SYNC AFFIRM valid_for=(online_logfiles,primary_role) db_unique_name=stby';

7.2 属性

- SYNC/ASYNC
- AFFIRM/NOAFFIRM
- VALID_FOR
- DB_UNIQUE_NAME
- REOPEN
- DELAY

7.3 LOG_ARCHIVE_CONFIG

ALTER SYSTEM SET log_archive_config='dg_config=(prod,stby)';

8. Gap 检测与修复

8.1 Gap

- 归档缺失
- 网络故障
- 备库落后

8.2 FAL

- Fetch Archive Log
- 自动请求
- 自动修复

8.3 手动

-- 备库
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/u01/arch/1_100.arc';

9. 延迟应用

9.1 DELAY

ALTER SYSTEM SET log_archive_dest_2=
  'service=stby ASYNC DELAY=60 ...';
-- 延迟 60 分钟应用

9.2 作用

- 误操作防护
- 病毒防护
- 时间窗口

9.3 应用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE 
  THROUGH ALL SWITCHOVER DISCONNECT;

10. 监控

10.1 进程

SELECT process, status, client_process, sequence#, block#, delay_mins
FROM v$managed_standby;

10.2 延迟

SELECT * FROM v$dataguard_stats;
SELECT max(delay_mins) FROM v$archive_dest;

10.3 归档

SELECT dest_id, status, error 
FROM v$archive_dest 
WHERE dest_id IN (1,2);

11. 网络优化

11.1 带宽

- 足够
- 冗余
- 监控

11.2 延迟

- 低延迟
- 优化
- 距离

11.3 SQLNet

# sqlnet.ora
SQLNET.SEND_QUEUE_SIZE
SQLNET.RECV_QUEUE_SIZE
SDU=32767

12. 常见问题

12.1 ORA-12154

- 网络不通
- 检查 TNS

12.2 ORA-16058

- 备库未 MOUNT
- 检查

12.3 GAP

- FAL 自动
- 手动注册
- 监控

13. 最佳实践

  1. Standby Redo Log:必备
  2. SYNC AFFIRM:零丢失
  3. ASYNC:性能
  4. FAL:自动修复
  5. 网络:冗余
  6. 监控:延迟
  7. Gap:及时修复
  8. SQLNet:优化
  9. 文档:配置
  10. 演练:故障

14. 参考资料

[1] Oracle Data Guard 19c, “Redo Transport” https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/