LOG_ARCHIVE_DEST_2网络传输失效主因是DB_UNIQUE_NAME与TNS服务名不匹配;需核对主备库DB_UNIQUE_NAME、LOG_ARCHIVE_CONFIG、监听器注册服务名,并确保ARCHIVE_DEST_STATE_2=ENABLE且禁用ARCHIVE_LAG_TARGET。
LOG_ARCHIVE_DEST_2 网络传输配不生效?先看 DB_UNIQUE_NAME 和服务名对不对
归档路径 log_archive_dest_2 配了却收不到归档日志,90% 是因为主库和备库的 db_unique_name 与 tns 连接描述符里的服务名没对上。oracle 不靠 ip 或主机名识别远端,只认 db_unique_name 和监听器注册的服务名是否匹配。
-
LOG_ARCHIVE_DEST_2值里写的SERVICE=xxx必须对应备库tnsnames.ora中定义的服务名(不是 SID,也不是主机名) - 用
SELECT DB_UNIQUE_NAME FROM V$DATABASE;查主、备库各自的唯一名,确保LOG_ARCHIVE_CONFIG里已包含两者,例如:'DG_CONFIG=(primary_db,standby_db)' - 备库监听器必须已注册该
DB_UNIQUE_NAME:查lsnrctl status输出中是否有service "standby_db"项,没有就检查local_listener和remote_listener配置
ARCHIVE_LAG_TARGET 导致归档卡住?别让它干扰 LOG_ARCHIVE_DEST_2 的实时传输
ARCHIVE_LAG_TARGET 是定时归档开关,设了它会让 Oracle 每隔 N 秒主动切一次日志,但它和 LOG_ARCHIVE_DEST_2 的网络传输是两套机制——前者管“什么时候生成归档”,后者管“生成后往哪送”。如果只依赖 ARCHIVE_LAG_TARGET,可能造成归档堆积在本地,等超时才发,看起来像 LOG_ARCHIVE_DEST_2 失效。
- 确认
LOG_ARCHIVE_DEST_STATE_2=ENABLE,且状态不是DEFER或ALTERNATE(查V$ARCHIVE_DEST_STATUS) - 禁用
ARCHIVE_LAG_TARGET(设为 0),让归档由日志切换自然触发;若需控制延迟,改用 Data Guard 的DELAY属性:LOG_ARCHIVE_DEST_2='SERVICE=standby_db DELAY=30' - 注意:启用
DELAY后,STANDBY_ARCHIVE_LOCATION在备库仍需手动配置,否则归档文件会写到默认位置而非你期望的目录
ORA-16057 错误:DGID 不匹配或归档目标未启用
启动归档传输时报 ORA-16057: DGID from server not matched with local,说明主库尝试连接备库时,收到的响应里 DB_UNIQUE_NAME 和本地 LOG_ARCHIVE_CONFIG 中声明的不一致。这不是网络不通,而是身份校验失败。
- 检查备库参数:
SHOW PARAMETER db_unique_name,必须和主库LOG_ARCHIVE_CONFIG里列出的名字完全一致(大小写敏感) - 确认备库已启动到
MOUNT状态(非OPEN),且已执行ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT; - 主库执行
ALTER SYSTEM ARCHIVE LOG CURRENT;后,立刻查V$ARCHIVE_DEST_STATUS的ERROR列,比看告警日志更快定位问题点
归档路径写错位置:LOG_ARCHIVE_DEST_2 不是存档目录,是传输通道
LOG_ARCHIVE_DEST_2 的值不是指定“把归档存在哪里”,而是定义“通过哪个服务把归档发到哪”。它的实际落盘路径由备库的 LOG_ARCHIVE_DEST_1(或 STANDBY_ARCHIVE_LOCATION)决定。很多人在这儿混淆,导致主库配完以为搞定,结果备库根本没收到文件。
- 主库
LOG_ARCHIVE_DEST_2示例:'SERVICE=standby_db LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby_db' - 备库必须配置接收端:比如
LOG_ARCHIVE_DEST_1='LOCATION=/u01/arch VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)',否则归档过来也没地方存 - 路径权限问题常被忽略:备库归档目录所属用户必须是
oracle,且有写权限;若用 ASM,要确认磁盘组在线且空间足够
真正麻烦的是跨版本或跨平台 DG 部署,比如 19c 主库连 12c 备库,LOG_ARCHIVE_DEST_2 的 ASYNC 和 SYNC 行为会有细微差异,建议统一小版本号再调。

















