一次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.net.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
查看/etc/services中,有无与上面对应SVCENAME的端口,例如:
db2cDB2 50000/tcp

要确认服务器是否在监听,可以用netstat -an 来查看端口是否处于LISTEN状态。 

查看我linux虚拟机上的db2数据库端口设置:

[[email protected] ~]# cat /etc/services | grep db2c_db2inst1
db2c_db2inst1 50000/tcp

端口设置没有问题,在看防火墙设置:

[[email protected] ~]# 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         

[[email protected] ~]# 

原来防火墙没有开启50000端口。编辑该文件,在里面添加一条记录:

11   ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:50000

添加完之后,重启iptables设置(一定要重启,否则不生效),并再次查看防火墙端口设置信息(注意红色标记部分):

[[email protected] ~]# service iptables restart
清除防火墙规则:                                           [确定]
把 chains 设置为 ACCEPT 策略: filter                      [确定]
正在卸载 Iiptables 模块                                    [确定]
应用 iptables 防火墙规则                                   [确定]
[[email protected] ~]# 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         

[[email protected] ~]# 

再次使用DbVisualizer工具连接数据库,成功!

时间: 2024-11-09 00:57:46

一次DB2数据库连接失败(SQLSTATE=08001)的解决方法的相关文章

数据库连接失败的原因及解决方法

各种业务系统在使用过程中都会遇到一些问题,因数据库连接失败,不能登录管理软件就是其中之一,这个很令人头疼而且常见的问题 一般的业务系统均采用的是SQL数据库,我们这里总结了SQL数据库连接失败的原因和解决方法: 原因一:登录账号.密码.服务器名称.数据库名称登录错误导致不能连接,这个比较常见,仔细检查好所填信息是否正确,填写正确一般就可以解决. 解决方法:当正在使用的软件出现数据库不能连接时,一般就是服务器名出现问题,更改服务器名称一般可以解决问题.数据库如果是安装在本机,服务器名可以用".&q

MySQL 数据库连接失败 SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (13)

CentOS6.5x64 安装禅道6.2,生成配置文件,数据库连接失败 数据库连接失败 SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (13) root,密码肯定没有错(命令行可以登录),用的127.0.0.1 PHP安装正常,MySQL配置正确,PHP的PDO.MySQL扩展正确,使用 <?php $link=mysql_connect('localhost','root','password'); if

SQL Server 2014 无法打开用户默认数据库 登录失败错误4064的解决方法

SQL Server 2014 无法打开用户默认数据库 登录失败错误4064的解决方法 晚上干了件蠢事,删除了管理员账户的默认数据库,紧接着就出现了标题里面的报错. 解决办法如下: 第一步:打开命令控制台 Win+R打开运行,输入CMD 第二步:复制粘贴如下命令 sqlcmd -E -d"master" -Q"exec sp_defaultdb N'PC\Admin', N'master'" 注意:把上条命令PC\Admin改成自己实际的账户,使用BackSlash

SQL 远程过程调用失败【0x800706be】解决方法

在SQL Server 配置管理器中出现[远程过程调用失败.[0x800706be]]错误,如图所示 上网查找发现时SQL2008与VS2012或VS2013的共存问题. · 解决方法 控制面板 --> 程序和功能,找到Microsoft SQL Server 2012 Express Local DB 和 Microsoft SQL Server 2014 Express Local DB 卸载 如果删除还不行,看是否有别的 Express Local DB结尾的软件,卸载掉 最后重新打开或刷

(十) ng-inlude指令加载页面失败的原因和解决方法

angularjs中提供的ng-include指令,很类似于JSP中的<jsp:include>用来将多个子页面合并到同一个父页面中,避免父页面过大,可读性差,不好维护. 父页面parent.html代码如下: <html> <head> <script src="angular-1.2.2/angular.js"></script> <script> function rootController($scope,

Windows 2008驱动安装失败的原因及解决方法

希望这些内容能够帮助各位朋友顺利地在Windows Server 2008系统环境下安装使用好各种设备的驱动程序! 寻找安装失败原因 一般来说,当我们将目标设备的驱动安装光盘正确放置到Windows Server 2008系统的物理光驱中后,系统能够自动弹出驱动程序安装向导窗口,开始安装目标设备的驱动程序,这是因为驱动安装光盘的根目录中常常存在一个名为 “Autorun.ini”的文件,用记事本之类的文本编辑程序打开该文件时,我们会看到其中包含“open=setup.exe”或 “open=in

hadoop启动dfs失败(奇葩得解决方法)

[[email protected]_master sbin]$ ./start-dfs.sh Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured.Starting namenodes on [] 而且每台机器都启动了namenode,datanode,但是都没有启动成功... jps看不到任何东西.启动失败

php ci框架中载入css和js文件失败的原因及解决方法

在将html页面整合到ci框架里面的时候,载入css和js失败. 原因是ci框架是入口的框架 对框架中文件的全部请求都须要经过index.php处理完毕,当载入外部的css和js文件的时候要使 用base_url()函数处理外部的链接. 在控制器中须要先加载url相关的类 public function test() { $this->load->helper('url'); $this->load->view('admin/test'); } 在test.php的view视图中.

GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)

问题: 32位程序在64位系统上调用GetModuleFileNameEx()遍历获取64位进程的全路径失败,得到的路径都为空. 根据官方的说法: For the best results use the following table to convert paths. Windows 2000 = GetModuleFileNameEx() Windows XP x32 = GetProcessImageFileName() Windows XP x64 = GetProcessImageF