LNS异常需查V$MANAGED_STANDBY中PROCESS='LNS'的状态及CLIENT_PROCESS,结合alert.log中ORA-12170/ORA-12537错误;若STATUS为NOT CONNECTED或CLIENT_PROCESS=UNKNOWN,表明网络未通或服务名解析失败,须验证tnsping目标服务名、监听器绑定IP(非localhost)、防火墙及LOG_ARCHIVE_DEST_2的VALID_FOR与STATUS配置。
查 LNS 进程状态和错误信息
主库上 v$managed_standby 中 lns 显示异常(如 status = 'closing'、status = 'idle' 但无后续传输),或日志里反复出现 ora-12170: tns: 连接超时、ora-12537: tns:connection closed,说明 lns 根本没连上备库监听器。
先执行:SELECT PROCESS, STATUS, CLIENT_PROCESS, SEQ#, BLOCK#, DELAY_MINS FROM V$MANAGED_STANDBY WHERE PROCESS = 'LNS';
再翻主库 alert_.log,搜 LNS 和 ORA- 错误码——这是定位起点,不是看 RFS 或 MRP。
- 如果
STATUS是NOT CONNECTED或空,基本可断定网络层未通 - 如果
CLIENT_PROCESS显示UNKNOWN,说明LOG_ARCHIVE_DEST_n指向的服务名解析失败 - 注意:
DELAY_MINS > 0不影响 LNS 连接,只影响备库应用;但若配置了SYNC又设DELAY,部分版本会静默拒绝连接
验证 tnsnames.ora 中目标服务名是否可达
LNS 不用本地 tnsnames.ora,它走的是主库 $ORACLE_HOME/network/admin/tnsnames.ora 里定义的目标别名。不能假设“主库能 tnsping 就代表 LNS 能连”——LNS 使用的用户上下文、环境变量、甚至 Oracle 版本行为都不同。
在主库服务器上,用 Oracle 用户执行:tnsping <目标服务名>(比如 tnsping STANDBY2)
- 必须返回
OK (xx ms),且HOST和PORT与备库实际监听地址一致 - 如果
tnsping成功但 LNS 失败,检查sqlnet.ora是否设置了SQLNET.ALLOWED_LOGON_VERSION_SERVER导致协议不兼容 - 如果
tnsping报TNS-12541,重点看监听器是否监听在0.0.0.0或具体 IP,而非localhost或127.0.0.1
确认备库监听器真正接受远程连接
备库监听器必须对外暴露,且允许主库 IP 连入。常见陷阱是监听器只绑定了 localhost 或 127.0.0.1,导致主库发过来的连接被直接拒掉。
登录备库,运行:lsnrctl status
观察输出中 Listening Endpoints Summary... 下的地址:
- 正确形式:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.22)(PORT=1521)))或(HOST=0.0.0.0) - 危险信号:
(HOST=localhost)或(HOST=127.0.0.1)→ 修改listener.ora,把HOST改成实际 IP 或0.0.0.0,再lsnrctl reload - 检查备库防火墙是否放行 1521 端口:
firewall-cmd --list-ports | grep 1521(Linux)或netsh advfirewall firewall show rule name=all | findstr "1521"(Windows)
检查 LOG_ARCHIVE_DEST_n 配置是否匹配角色和状态
LNS 启动依赖归档目标配置本身合法且启用。即使 tnsping 通、监听器开着,错配 valid_for 或状态也会让 LNS 直接跳过该目的地。
在主库执行:SELECT DEST_ID, STATUS, DESTINATION, VALID_FOR, TRANSMIT_MODE, AFFIRM FROM V$ARCHIVE_DEST WHERE DEST_ID = 2;
-
STATUS必须是VALID,不是INACTIVE或ERROR -
VALID_FOR必须包含(STANDBY_LOGFILE, STANDBY_ROLE)—— 若写成(ONLINE_LOGFILE, PRIMARY_ROLE),LNS 在主库角色下根本不会尝试连接 -
TRANSMIT_MODE为SYNC时,AFFIRM应为YES;若为ASYNC,AFFIRM应为NO;混搭会导致部分 Oracle 版本拒绝启动 LNS - 别忽略
LOG_ARCHIVE_DEST_STATE_2参数:必须是ENABLE,不是DEFER
最易被忽略的是:级联备库场景下,中间节点(如 standby1)作为“主库”向下游(standby2)发日志时,它的 LOG_ARCHIVE_DEST_2 的 VALID_FOR 必须面向自身当前角色(即 STANDBY_ROLE),而不是照抄主库配置。


















