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. 最佳实践
- Standby Redo Log:必备
- SYNC AFFIRM:零丢失
- ASYNC:性能
- FAL:自动修复
- 网络:冗余
- 监控:延迟
- Gap:及时修复
- SQLNet:优化
- 文档:配置
- 演练:故障
14. 参考资料
[1] Oracle Data Guard 19c, “Redo Transport” https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/