为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8(1-2-18-21.06.26-142506-10013-ENT Pack6)
【操作系统】:CentOS
【CPU】:x86 CPU
【问题描述】*:
1、配置达梦8至达梦8的DBLINK异常
1.1、按手册配置创建dmmal.ini,A,B服务器配置参数一致
[dmlink1]
mal_inst_name=DMSERVER #A主机实例
mal_inst_host=10.51.xx.xx #A主机IP
mal_inst_port=5236 #A主机端口
mal_host=10.51.xx.xx #A主机IP
mal_port=61142 #主机端口
[dmlink2]
mal_inst_name = DMSERVER1 #B主机实例
mal_inst_host=10.51.xx.xx #B主机IP
mal_inst_port=5236 #B主机端口
mal_host=10.51.xx.xx #B主机IP
mal_port=61142 #B主机端口
1.2、开启A,B数据库dm.ini 的MAL_INI参数,改为1
1.3、A,B服务器重启动;
1.4、B服务器上创建外链接,显示创建成功;
CREATE PUBLIC LINK NW_DBLINK CONNECT WITH FMISXXXX IDENTIFIED BY FMISXXXXX USING ‘10.XX.XX.XX/61142’;
1.5、telnet A主机端口正常(5236,61142)
1.6、查询报错
SELECT * FROM XTCS@NW_DBLINK
第1 行附近出现错误[-2251]:
DBLINK远程服务器获取对象[XTCS]失败
也可以考虑创建基于odbc的dblink,可以不用重启
create link “SYSDBA”.“TTT1” connect ‘ODBC’ with “SYSDBA” identified by “SYSDBA” using ‘DM’;DM是odbc的DSN
上午跟达梦吴同学沟通了下,往端口上排查了,要双向通,
而且我B机器是容器化部署的,做了端口映射,所以A,B机器的配置dmmal.ini应该要根据映射端口做调整,最终A机器修改下端口映射,已解决,谢谢各位了。
A机器的dmmal.ini( mal_inst_port,mal_port) 改成映射端口,B机器的端口还是5236,和61142
[dmlink2]
mal_inst_name = DMSERVER1
mal_inst_host=10.51.xx.xx
mal_inst_port=36001
mal_host=10.51.xx.xx
mal_port=36002
1、请使用netstat -an|grep port_num来验证mal端口是否正常监听;
2、请确认服务器之间通信要通,且防火墙,SELINUX关闭
3、[XTCS]是否是FMISXXXX用户下的对象?