ORA-16198错误主因是NET_TIMEOUT设置过低,建议先调至45并设SCOPE=BOTH;若仍报错,需排查备库RFS状态、主库LGWR等待事件、网络延迟、磁盘IO及19c相关BUG补丁。

ORA-16198 出现在 Oracle 19c Data Guard 主库上,基本可以确定是 LGWR 进程在同步 redo 到备库时超时了——不是网络彻底断开,而是传输耗时超过了当前 NET_TIMEOUT 设置值。
检查并调大 LOG_ARCHIVE_DEST_n 的 NET_TIMEOUT 值
该错误最常见、最直接的诱因就是 NET_TIMEOUT 设置过低。19c 默认仍沿用旧逻辑(尤其在 SYNC 模式下),若未显式设置,可能回退到历史默认值(如 10 秒)。
- 确认当前设置:
SELECT dest_name, attribute, value FROM v$archive_dest_parameter WHERE dest_id = 2 AND attribute = 'NET_TIMEOUT'; - 若未设置或值 ≤ 30,建议立即调整:
ALTER SYSTEM SET log_archive_dest_2='SERVICE=standby_db ASYNC NET_TIMEOUT=45 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby_db' SCOPE=BOTH; - 注意:必须带
SCOPE=BOTH,否则重启后失效;若用的是SYNC模式,NET_TIMEOUT尤其关键,但也要权衡业务对写入延迟的容忍度 - 修改后观察 alert 日志是否仍有
ORA-16198和LGWR: Attempting destination ... network reconnect连续报错
排查 LGWR 无法在超时窗口内完成发送的真实瓶颈
单纯加 NET_TIMEOUT 只是掩盖问题。如果设为 60 仍报错,说明底层存在实质性阻塞。
- 查备库 RFS 进程状态:
SELECT process, status, client_process, sequence# FROM v$managed_standby WHERE process = 'RFS';—— 若长期IDLE或RECEIVING卡住,可能是备库磁盘 I/O 拥塞或归档目标空间不足 - 查主库 LGWR 等待事件:
SELECT event, wait_time, seconds_in_wait FROM v$session_wait WHERE sid = (SELECT sid FROM v$bgprocess WHERE name = 'LGWR');—— 关注Log file sync、Network asynch I/O wait、gc cr block busy等高耗时等待 - 检查网络实际延迟:在主库执行
sqlplus /@standby_db并配合tcpdump -i any port 1521 -w lgwr_net.pcap抓包,确认是否存在重传、乱序或 ACK 延迟 >30s - 确认备库
db_recovery_file_dest_size是否告警满,或归档路径(log_archive_dest_2指向的目录)磁盘iostat -x 1 5中 %util >95 或 await >50ms
确认是否触发已知 Bug 或版本兼容性问题
虽然 ORA-16198 是通用超时提示,但在 19c 中仍需警惕特定补丁缺失引发的伪超时。
- 运行
SELECT * FROM v$version;确认精确版本,例如19.21.0.0.0或19.20.0.0.0 - 重点核查 MOS 文档
Doc ID 3071173.1(适用于 19c 的 LGWR SYNC 超时误报问题)和Doc ID 3050057.1(19.14+ 中 RFS 在高并发下丢包导致 LGWR 反复重连) - 若使用
SYNC模式且版本 ≤ 19.13,强烈建议打上 RU(Release Update)补丁,例如19.19.0.0.0 RU已修复多个 LGWR 网络状态机异常场景 - 避免混用不同 patch level 的主备库:19c 允许主库 19.20、备库 19.18,但
LOG_ARCHIVE_DEST的网络握手协议细节可能不一致,导致隐式超时
真正棘手的情况是:NET_TIMEOUT 调到 60 且网络/IO 均正常,仍偶发 ORA-16198。这时要怀疑是不是某次 redo block 大小突增(比如批量插入含大 LOB),而 LGWR 未做分块发送优化——这种场景下,不能只看平均延迟,得抓取出错时刻的 lgwr trace 文件(路径见 alert 日志中 Errors in file ...),搜索 ksr send 和 timeout 关键字定位具体 block offset。


















