Oracle Data Guard 性能优化详解
Oracle Data Guard 性能优化详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
Data Guard 性能优化保证灾备延迟可控[1]:
详细见:Oracle Data Guard 监控详解、Oracle Redo 传输详解。
2. 优化目标
2.1 传输延迟
- Transport Lag
- 网络优化
- 秒级
2.2 应用延迟
- Apply Lag
- 备库优化
- 秒级
2.3 主库影响
- SYNC 模式
- 最小化
- 性能
3. 网络优化
3.1 带宽
- 足够带宽
- 监控
- 升级
3.2 延迟
- 低延迟
- 距离
- Far Sync
3.3 SQLNet
# sqlnet.ora
SQLNET.SEND_QUEUE_SIZE=1048576
SQLNET.RECV_QUEUE_SIZE=1048576
SDU=32768
3.4 TCP
# OS
net.ipv4.tcp_rmem
net.ipv4.tcp_wmem
net.core.rmem_max
net.core.wmem_max
4. Standby Redo Log
4.1 配置
- 比主库 Online Redo 多一组
- 相同大小
- 监控
4.2 I/O
- 独立磁盘
- 高速
- 监控
4.3 组数
-- 至少 (主库 Redo 组数 + 1)
SELECT group#, count(*) FROM v$log GROUP BY thread#;
SELECT group# FROM v$standby_log;
5. Redo Apply 优化
5.1 并行
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
PARALLEL 8 DISCONNECT FROM SESSION;
5.2 内存
- PGA
- SGA
- 调整
5.3 I/O
- 异步 I/O
- 磁盘
- 优化
6. SYNC 优化
6.1 AFFIRM vs NOAFFIRM
- AFFIRM:写盘确认,零丢失
- NOAFFIRM:内存确认,快
- 评估
6.2 Standby 日志
- 多组
- I/O 优化
- 监控
6.3 网络
- 低延迟
- 冗余
- 优化
7. ASYNC 优化
7.1 网络
- 高带宽
- 缓冲
- 优化
7.2 缓冲
- SEND_QUEUE_SIZE
- 大
- 吸收峰值
7.3 处理
- LNS 进程
- 监控
- 优化
8. SQL Apply 优化
8.1 进程
ALTER DATABASE STOP LOGICAL STANDBY APPLY;
EXEC DBMS_LOGSTDBY.APPLY_SET('APPLY_SERVERS', 8);
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
8.2 事务
- 大事务影响
- 拆分
- 优化
8.3 并行
- 多进程
- 并行
- 性能
9. 监控
9.1 延迟
SELECT name, value, unit FROM v$dataguard_stats;
9.2 分布
SELECT * FROM v$standby_event_histogram;
9.3 传输
SELECT * FROM v$redo_dest_resp_histogram;
10. 主库优化
10.1 Redo 生成
- 减少 Redo
- 批量
- 优化
10.2 LGWR
- 性能
- 监控
- 优化
10.3 Commit
- 批量
- 减少频率
- 优化
11. 备库优化
11.1 I/O
- 独立磁盘
- 异步 I/O
- 高速
11.2 内存
- SGA
- PGA
- 调整
11.3 CPU
- 并行
- 核数
- 优化
12. 应用场景优化
12.1 OLTP
- SYNC 模式
- 低延迟网络
- Standby Redo
12.2 仓库
- ASYNC 模式
- 大 Redo
- 并行 Apply
12.3 远距离
- Far Sync
- ASYNC
- 优化
13. 常见问题
13.1 延迟高
- 网络
- 磁盘
- 优化
13.2 主库慢
- SYNC 模式
- 网络
- 评估
13.3 Apply 慢
- 并行
- I/O
- 优化
14. 最佳实践
- Standby Redo Log:必备
- 网络:优化
- 并行 Apply:启用
- SQLNet:调整
- 监控:延迟
- Far Sync:远距离
- I/O:独立
- 内存:调整
- 测试:性能
- 文档:配置
15. 参考资料
[1] Oracle Data Guard 19c, “Performance Tuning” https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/