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. 最佳实践

  1. Standby Redo Log:必备
  2. 网络:优化
  3. 并行 Apply:启用
  4. SQLNet:调整
  5. 监控:延迟
  6. Far Sync:远距离
  7. I/O:独立
  8. 内存:调整
  9. 测试:性能
  10. 文档:配置

15. 参考资料

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