首先要明确问题,数据库是不是真的正常启动了,无法连接数据库是怎样的操作环境和流程?
本地客户端无法连接数据:
- 确认数据库是否真的正常启动了,如果未正常启动,登录时报
错误号:6001,错误消息:网络通信异常。
Windows 通过资源管理器看是否有 dmsvc.exe 进程;Linux 通过 ps -ef | grep dmserver 看是否有 dmserver 进程。如果进程存在,查看数据库日志,一般在 ../dmdbms/log 下,日志名为 dm_实例名_年月.log,例如 dm_DMSERVER_202002.log,在文件中查看启动过程中是否已经出现 SYSTEM IS READY 字样,如果出现该字样说明正常启动了,如果没有需详细查看日志具体分析。
- 确认连接数据库的 IP 地址和端口号是否正确,如果未正常启动,登录时报
错误号:6001,错误消息:网络通信异常,端口号可以在数据库目录下的 dm.ini 中找到PORT_NUM确认。 - 检查用户名和密码是否正确,如果不正确登录时会提示。
用户修改密码后,密码中有特殊字符,比如@,这个时候需要进行转义,关于转义的相关资料,可参考《DM_Disql 使用手册》。(手册位于数据库安装路径 /dmdbms/doc/special 文件夹下)
例如密码为:ZnZbn@1234,则需按照以下规则输入密码:
单引号 双引号 密码 双引号 单引号
./ddisql user_name/'"password!@#"'@ip:port |
- 安全版中开启了通信加密功能,需要 SSL 证书才能正常登陆。此时 dm.ini 中
ENABLE_ENCRYPT 不为 0。
远程无法正常登陆:
远程登录同样可能存在上述的本地登录中的一些问题,另外要确认的是网络是否正常和防火墙是否关闭或配置相关策略,建议关闭本地的防火墙以避免不必要的问题,如果一定使用防火墙,请专业人员进行正确的配置。
- 检查网络
通过 ping 命令检查网络是否通畅,通过 telnet 命令检查端口是否通畅,具体的使用方法请自行通过网络搜索这两条命令。
- 检查防火墙(包括软件防火墙和物理防火墙)
软件防火墙 Windows 一般是自带的“防火墙”和 Linux 自带的 Firewalls、iptables 防火墙。
Linux6 版本:
查看防火墙状态,执行如下命令:
\# service iptables status |
显示 ip6tables:未运行防火墙,表示防火墙未启动。
关闭防火墙,执行如下命令:
service iptables stop |
Linux7 版本:
查看防火墙,执行如下命令:
\# systemctl status firewalld.service |
显示 Active: inactive (dead) ,表示防火墙未启动。
关闭防火墙,执行如下命令:
\# systemctl stop firewalld.service |
关于防火墙配置及更多的知识请自行学习,如有条件请联系项目的系统管理员或网络管理员。
物理防火墙或网关等物理设备的详细排查请联系项目的网络管理员,改领域应有专业人士处理。
【其他原因】:
- 达到最大会话数限制,无法建立新的连接
确定是否达到最大会话数限制,在 dmdbms/log 目录下,查看当月日志。例如,本月(8 月)的日志名为:dm_DMSERVER_201808.log 若日志中有 reach the maxsession limit 的提示,则说明达到最大会话数限制。
确认是由此原因导致无法访问数据库,则需要进行以下两个方面的排查:
- 应用连接池配置,连接池最大会话数要进行合理的设置。
- dm.ini 文件中,
MAX_SESSIONS参数,默认为 100,可根据实际需要调整。
MAX_SESSIONS 系统允许同时连接的最大数,同时还受到 LICENSE 的限制,取二者中较小的值,有效值范围 (1~65000)。
例如:应用连接池设置的最大连接数设置为 500,且 license 为正式企业版、测试企业版,则需要修改 dm.ini 中 MAX_SESSION 参数 500,在数据库中执行 SP_SET_PARA_VALUE(2,‘MAX_SESSIONS’,600),修改完成后,需要重启数据库服务生效。
参考链接:https://blog.csdn.net/fengxiaozhenjay/article/details/102505293
如果在建立实例中途中断,建立实例的文件夹可能被创建,但是实际实例是没有建立成功的,这个时候如果登陆,也可能报错 6001,此时,需要删除当前没建立完整的实例,重新建立。




