Oracle Data Guard 网络配置详解

Oracle Data Guard 网络配置详解

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


1. 概述

Data Guard 网络配置保证可靠传输[1]:

详细见:Oracle Redo 传输详解Oracle 网络高可用详解


2. 网络要求

2.1 带宽

- 足够带宽
- Redo 传输
- 监控

2.2 延迟

- 低延迟
- SYNC 模式
- 关键

2.3 冗余

- 双链路
- 不同路径
- 高可用

3. TNS 配置

3.1 tnsnames.ora

prod = 
  (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = prod-host)(PORT = 1521))
    (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = prod))
  )

stby = 
  (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = stby-host)(PORT = 1521))
    (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = stby))
  )

3.2 listener.ora

# 备库
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC = (GLOBAL_DBNAME = stby_DGMGRL)(ORACLE_HOME=...)(SID_NAME=stby))
  )

LISTENER =
  (DESCRIPTION_LIST = 
    (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = stby-host)(PORT = 1521)))
  )

3.3 验证

tnsping prod
tnsping stby
sqlplus sys/xxx@prod as sysdba
sqlplus sys/xxx@stby as sysdba

4. SQLNet 优化

4.1 SDU

# sqlnet.ora
DEFAULT_SDU_SIZE=32767

4.2 队列

# sqlnet.ora
SQLNET.SEND_QUEUE_SIZE=1048576
SQLNET.RECV_QUEUE_SIZE=1048576

4.3 超时

# sqlnet.ora
SQLNET.INBOUND_CONNECT_TIMEOUT=60
SQLNET.OUTBOUND_CONNECT_TIMEOUT=60

5. 参数

5.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 
   REOPEN=60 
   NET_TIMEOUT=30';

5.2 属性

- SYNC/ASYNC:传输模式
- AFFIRM/NOAFFIRM:确认
- REOPEN:重试间隔
- NET_TIMEOUT:网络超时
- DELAY:应用延迟

5.3 LOG_ARCHIVE_CONFIG

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

6. 网络冗余

6.1 双链路

- 主链路
- 备链路
- 自动切换

6.2 不同路径

- 不同交换机
- 不同路由
- 高可用

6.3 监控

- 延迟
- 带宽
- 状态

7. 跨地域网络

7.1 专线

- 专用光纤
- 低延迟
- 高可靠

7.2 VPN

- 加密
- 公网
- 备用

7.3 Far Sync

- 近距离 SYNC
- 远端 ASYNC
- 零丢失

详细见:Oracle Far Sync 详解


8. 网络监控

8.1 连通

ping stby
tnsping stby

8.2 带宽

iperf -c stby

8.3 延迟

ping -c 100 stby

9. 传输监控

9.1 进程

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

9.2 延迟

SELECT * FROM v$dataguard_stats;

9.3 错误

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

10. 常见问题

10.1 ORA-12154

- TNS 解析
- 检查 tnsnames

10.2 ORA-12541

- 监听器
- 检查
- 启动

10.3 ORA-12535

- 超时
- NET_TIMEOUT
- 优化

10.4 ORA-03135

- 连接丢失
- 网络
- 检查

11. 优化

11.1 SDU

- 32767
- 大块传输
- 性能

11.2 队列

- 大队列
- 吸收峰值
- 性能

11.3 TCP

# OS
net.ipv4.tcp_rmem
net.ipv4.tcp_wmem

12. 安全

12.1 加密

# sqlnet.ora
SQLNET.ENCRYPTION_SERVER=REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER=AES256

12.2 SSL/TLS

- 证书
- 加密
- 安全

12.3 防火墙

- 端口限制
- IP 限制
- 安全

详细见:Oracle 网络加密与 SSL TLS


13. 最佳实践

  1. 冗余:双链路
  2. 带宽:足够
  3. SDU:32767
  4. 监控:延迟
  5. NET_TIMEOUT:配置
  6. 加密:安全
  7. 测试:连通
  8. 文档:配置
  9. 优化:参数
  10. 演练:故障

14. 参考资料

[1] Oracle Database Net Services Administrator’s Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/netag/