注册
某银行XXX系统应用报错 -3113 问题分析处理
专栏/技术分享/ 文章详情 /

某银行XXX系统应用报错 -3113 问题分析处理

@放飞梦想@ 2026/07/16 163 1 0
摘要

一、问题概述

问题时间:2026 年 7 月 10 日
受影响环境:sit-zfmm-yy-01u(应用服务器)→ 达梦数据库服务器
问题现象:应用服务连接数据库时报错 [-3113],提示"没有匹配的可登录服务器",应用无法正常使用数据库服务。

二、问题现象

2.1 应用层报错

应用日志中持续出现以下报错信息:
程序… = [-3113] code=[没有匹配的可登录服务器]
应用报错截图.png

2.2 disql 直连测试

在应用服务器上通过 disql 工具尝试连接数据库:
操作步骤 结果
执行命令 ./disql SUNYARDZFMMCS@ZFMM
第一次尝试 [-70019]: 没有匹配的可登录服务器
第二次尝试 用户名: SUNYARDZFMMCS
第三次尝试 密码: [-70028]: 创建 SOCKET 连接失败
结论 3 次尝试后无法连接服务器,退出 disql
登录失败截图.png
登录失败截图2.jpeg

2.3 通过 IP + 端口直连测试

使用 IP 地址和端口直接连接数据库:
./disql SUNYARDZFMMCS@13.64.17.42:5225
结果:服务器 [13.64.17.42:5225]: 处于普通打开状态
通过 IP + 端口方式可以正常连接数据库,说明数据库实例本身运行正常。
登录成功截图.png

三、排查过程

3.1 排查思路

排查思路如下图所示:
步骤 操作 结果
步骤 1 确认数据库实例状态 实例正常运行,端口可通
步骤 2 检查应用连接方式 发现应用使用服务名方式连接
步骤 3 检查 dm_svc.conf 配置 发现异常配置参数
步骤 4 定位根因 LOGIN_MODE=1 残留导致连接失败
步骤 5 修改配置并验证 应用恢复正常

3.2 关键发现

检查应用端配置的 dm_svc.conf 文件,发现以下关键问题:
(1)应用使用了服务名方式进行 JDBC 连接配置
(2)服务名配置中仅配置了单 IP 地址
(3)但同时配置了全局参数 LOGIN_MODE=1
dm_svc配置.png
关键发现:LOGIN_MODE=1 的含义是"仅连接主节点(Primary)",该参数仅在集群环境下有效。当前数据库已调整为单机模式,不存在主备节点之分,导致驱动在尝试连接时因找不到 Primary 节点而直接返回 -3113 错误。

四、根因分析

4.1 参数说明

参数 含义
LOGIN_MODE=0 优先连接 PRIMARY 模式的库,Normal 模式次之,最后选择 Stantby 模式
LOGIN_MODE=1 仅连接主节点(Primary)
LOGIN_MODE=2 仅连接备节点(Standby)
LOGIN_MODE=3 优先连接 STANDBY 模式的库,PRIMARY 模式次之,最后选择 Normal 模式
LOGIN_MODE=4 优先连接 Normal 模式的库,PRIMARY 模式次之,最后选择 STANDBY 模式。缺省值为 4。

4.2 问题根因

根因:用户反馈,该数据库环境原为集群部署,后因主机资源下线回收了一个节点,调整为单机模式。但在修改 dm_svc.conf 时,操作仅删除了多余的 IP 地址,未同步删除集群相关的参数配置(LOGIN_MODE=1),导致应用通过 JDBC 驱动连接数据库时,驱动按照 LOGIN_MODE=1 的逻辑去寻找 Primary 节点,而单机环境下无主备之分,驱动无法找到符合条件的节点,直接返回 -3113 错误:“没有匹配的可登录服务器”。

五、解决方案

5.1 修改 dm_svc.conf 配置

修改应用端的 dm_svc.conf 配置文件:
修改前(问题配置):
ZFMM=(13.64.xx.xx:5225)
LOGIN_MODE=1
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(1000)

修改后(正确配置):
ZFMM=(13.64.xx.xx:5225)
#LOGIN_MODE=1 <-- 删除或注释该行
#SWITCH_TIMES=(3) <-- 删除或注释该行
#SWITCH_INTERVAL=(1000) <-- 删除或注释该行

5.2 重启应用服务

修改配置后,重启应用服务使配置生效:

5.3 验证结果

重启后验证:
✅ 应用日志不再报 -3113 错误
✅ 应用能够正常连接数据库
✅ disql 通过服务名方式连接正常

六、总结与建议

6.1 问题总结

本次 -3113 错误的根因是:数据库从集群调整为单机模式后,dm_svc.conf 配置未完全同步修改,残留的 LOGIN_MODE=1 参数导致 JDBC 驱动在单机环境下无法找到 Primary 节点,从而返回"没有匹配的可登录服务器"错误。

6.2 预防措施

(1)集群调整为单机时,配置检查清单:
 - 确认所有节点的 IP 配置正确
 - 确认 DM_SVC.CONF配置文件中LOGIN_MODE 参数已删除或调整为 4
(2)变更后验证清单:
 - disql 通过服务名方式连接验证
 - 应用端连接验证
 - 监控应用日志确认无异常错误
(3) 建议在生产环境建立变更检查清单(Checklist),避免遗漏配置项。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服