最近公司新建一台虚拟机,根据开发要求配置两个db2实例,配置实例1为如下端口
在windows system32 drvers /etc目录service添加如下配置
数据库实例db2inst1启动正常。
数据库实例db2inst2启动报如下错,
检查db2diag日志发现如下错误日志,
起初以为是哪里配置不对,各种检查services文件,都没发现有什么特殊字符,改各种端口,网上
方法各种试,检查端口是否占用,
netstat ano|findstr 50001端口没有,监听,并不是端口冲突导致的无法启动。
参考网上大神连接方案,DB2 启动/远程连接失败错误: SQL5043N 解决一例 http://blog.liguoliang.com/2010/db2-sql5043n-error/ 如下,我将services文件修改如下截图,启动正常
解决方法:
运行db2diag, 或查看db2diag.log, 最新的Error:
2010-10-02-16.15.37.298000+480 I467399H464 LEVEL: Error
PID : 2424 TID : 1580 PROC : db2syscs.exe
INSTANCE: DB2 NODE : 000
EDUID : 1580 EDUNAME: db2sysc
FUNCTION: DB2 UDB, common communication, sqlcctcpconnmgr, probe:5
MESSAGE : DIA3201E The service name "db2c_DB2" specified in the database
manager configuration file cannot be found in the TCP/IP services file.
豁然了, 说services中没有对应的配置…
但我的问题是配置无误, 只是配置在etc/services最后一行, 而且没有注释. 如:
"db2c_DB2 50000/tcp" —– 此种情况下 死活不工作.
最终解决方法:
加一个注释或在后面增加其他Instance对应端口后, 可正常工作. 如:
"db2c_DB2 50000/tcp #DB2 Port"
综合网,个人觉得应该是我这种多实例情况下没有添加注释,DB2找到第一个就认为其它端口不是DB2端口,所以需要添加注释。