⼀次DB2数据库连接失败(SQLSTATE=08001)的解决⽅法
有⼀次,在使⽤DbVisualizer⼯具连接⾃⼰linux虚拟机上的DB2数据库时,报如下错误:
Product:  DbVisualizer Pro 9.1
Build:  #2050 (2013/09/08 11:03)
Java VM:  Java HotSpot(TM) 64-Bit Server VM
Java Version:  1.6.0_43
Java Vendor:  Sun Microsystems Inc.
OS Name:  Windows 7
OS Arch:  amd64
OS Version:  6.1
An error occurred while establishing the connection:
Long Message:
[jcc][t4][2043][11550][4.15.82] 异常 java.ConnectException:打开端⼝ 50,000 上服务器 /192.168.17.88 的套接字时出错,消息为:Connection timed out: connect。 ERRORCODE=-4499, SQLSTATE=08001 Details:
Type: com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException
Error Code: -4499
SQL State: 08001
在百度上搜索"DB2 SQLSTATE=08001",到如下资料:
这种问题⼀般的原因:
1.DB2COMM=TCPIP
2.数据库故障
3.端⼝号被禁⽤
解决⽅案:
1.看看端⼝号有没有配置正确,看⼀下配置参数svcename跟services⽂件中配置的db2端⼝号是否⼀致,windows⼀般⽤50000,unix/linux⼀般⽤60000。
2.连接出错⾸先看看服务器ip 和端⼝写对没有。
ip如果没错就要看看服务器的db2服务端⼝对不对。另外对于服务器下⾯这些也要注意。
检查服务器的配置情况如下:
验证存在的DB2数据库
db2 list db directory
db2 list db directory show detail
验证实例使⽤的通讯协议,查看DB2COMM变量
db2set -all
查看数据库管理器的配置,查看SVCENAME(特指tcpip协议)
db2 get dbm cfg
db2数据库sql语句查看/etc/services中,有⽆与上⾯对应SVCENAME的端⼝,例如:
db2cDB2 50000/tcp
要确认服务器是否在监听,可以⽤netstat -an 来查看端⼝是否处于LISTEN状态。
查看我linux虚拟机上的db2数据库端⼝设置:
[root@localhost ~]# cat /etc/services | grep db2c_db2inst1
db2c_db2inst1 50000/tcp
端⼝设置没有问题,在看防⽕墙设置:
[root@localhost ~]# service iptables status
±í¸ñ£ºfilter
Chain INPUT (policy ACCEPT)
num  target    prot opt source              destination
1    ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED
2    ACCEPT    icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:22
5    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:80
6    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:81
7    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:8080
8    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:8081
9    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:8001
10  ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:8002
11  REJECT    all  --  0.0.0.0/0            0.0.0.0/0          reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num  target    prot opt source              destination
1    REJECT    all  --  0.0.0.0/0            0.0.0.0/0          reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num  target    prot opt source              destination
[root@localhost ~]#
原来防⽕墙没有开启50000端⼝。编辑该⽂件,在⾥⾯添加⼀条记录:
11  ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:50000
添加完之后,重启iptables设置(⼀定要重启,否则不⽣效),并再次查看防⽕墙端⼝设置信息(注意红⾊标记部分):
[root@localhost ~]# service iptables restart
清除防⽕墙规则:                                          [确定]
把 chains 设置为 ACCEPT 策略: filter                      [确定]
正在卸载 Iiptables 模块                                    [确定]
应⽤ iptables 防⽕墙规则                                  [确定]
[root@localhost ~]# service iptables status
±í¸ñ£ºfilter
Chain INPUT (policy ACCEPT)
num  target    prot opt source              destination
1    ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED
2    ACCEPT    icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:22
5    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:80
6    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:81
7    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:8080
8    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:8081
9    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:8001
10  ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:8002
11  ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:50000
12  REJECT    all  --  0.0.0.0/0            0.0.0.0/0          reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT)
num  target    prot opt source              destination
1    REJECT    all  --  0.0.0.0/0            0.0.0.0/0          reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)
num  target    prot opt source              destination
[root@localhost ~]#
再次使⽤DbVisualizer⼯具连接数据库,成功!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。