免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 38197 | 回复: 10
打印 上一主题 下一主题

DB2 关于 SQL30081N 检测到通信错误问题求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-13 15:39 |只看该作者 |倒序浏览
在一台liux64服务器上装了个DB2 server V8.1
现在在自己机器上通过ODBC连接,总是出错。(网络是好的。可以连接到服务器)

SQL30081N  检测到通信错误。正在使用的通信协议:"TCP/IP"。正在使用的通信API:
"SOCKETS"。检测到错误的位置:"192.168.2.212"。检测到错误的通信函数:"connect"。协
议特定的错误代码:"10061"、"*"、"*"。  SQLSTATE=08001

上网查答案。找了半天。总结了3种可能的情况。
1。防火墙 2。没有启动实例 3。端口

1。都关闭了防火墙。
2。已经启动了实例
DB2START processing was successful.

3。# Local services

DB2_db2inst1    60000/tcp
DB2_db2inst1_1  60001/tcp
DB2_db2inst1_2  60002/tcp
DB2_db2inst1_END        60003/tcp

端口也都设置了。

可是连接的时候还是报上面的错误。真是要疯了!!:em12:
还希望论坛的各位高人,能够指点,指点!!!

[ 本帖最后由 comerwang 于 2006-12-13 15:42 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-12-13 17:05 |只看该作者
DB2COMM 设了没?

论坛徽章:
0
3 [报告]
发表于 2006-12-13 21:41 |只看该作者
1、在服务器端查看管理数据库的端口或者名称与serviecs中的设置是否一致,如果不一致调整为一致。
2、设置DB2实例的连接方式为TCPIP db2set DB2COMMM=TCPIP -i

论坛徽章:
0
4 [报告]
发表于 2006-12-14 09:55 |只看该作者
谢谢楼上2位朋友提供的帮助。
现在的情况是:

[db2inst1@redhat-64 ~]$ db2set
DB2COMM=tcpip

(SVCENAME) = DB2_db2inst1
DB2_db2inst1    60000/tcp

可是还是连接不上!!。这次真是无语了!

[ 本帖最后由 comerwang 于 2006-12-14 10:01 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2006-12-14 10:16 |只看该作者
检查db2diag.log

论坛徽章:
0
6 [报告]
发表于 2006-12-14 10:48 |只看该作者
日志也没什么信息。到是一些没有关系的内容。
PID     : 18237                TID  : 182957478752PROC : db2star2
INSTANCE: db2inst1             NODE : 000
FUNCTION: DB2 UDB, oper system services, licRequestAccess, probe:1
MESSAGE : ADM12007E  There are "7" day(s) left in the evaluation period for the
          product "DB2 Enterprise Server Edition". For evaluation license terms
          and conditions, refer to the IBM License Agreement in the try_LA file,
          located in the following directory:
          "/opt/IBM/db2/V8.1/license/en_US.iso88591". If you have licensed this
          product, please ensure the license key is properly installed. You can
          install the license via using License Center or db2licm command line
          utility. The license file can be obtained from your licensed product
          CD.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2006-12-14 11:59 |只看该作者
学会用GOOGLE吧



为什么客户端连服务器总是报错SQL30081N错
                             
作者:cq_1390263 发表日期:2006-04-07 12:48


  内容导航: 第1页  上一页 1 下一页  
  

    【IT168 数据库应用】标题:为什么客户端连服务器总是报错SQL30081N错?


--------------------------------------------------------------------------------
作者:cq_1390263    时间:06-01-10 10:38

为什么所有客户端连服务器总是报错SQL30081N错???


--------------------------------------------------------------------------------
作者:cq_1390263    时间:06-01-10 16:26

问题已经基本搞清!
在网上找了很久,觉得这份帖子比较精辟。

http://beta.xmu.cn/modules.php?op=m...article&sid=111

当你遇到无法连接DB2的问题时,首先要了解整个层次模型,多层模型将会涉及一个或多个中间层,会给故障定位增加难度。另外,诸如操作系统、DB2版本及补丁级别、通讯协议也是要了解的。

一个基本的故障解决方法是:如果是客户端上的应用遇到问题,那么用DB2命令行来测试是否可以连接到DB2服务器。如果是三层结构,那么直接在中间层上尝试连接DB2服务器。


通常,有关通讯的故障会出现以下信息:

SQL30081N A communication error has been detected. Communication
protocol being used: "TCP/IP". Communication API being used: "SOCKETS".
Location where the error was detected: "". Communication function
detecting the error: "connect". Protocol specific error code(s):
"10061", "*", "*". SQLSTATE=08001


如果问题是持续的,那会比较好解决,有可能是配置的问题,或者网络通讯。如果问题是间断性的,那可能涉及网络故障、连接池中代理太少。

如果你是远程客户端遇到问题,那么先测试服务器本地是否可以连到DB2 Server.如果还是无法连接,那么查看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状态


检查客户端的配置如下:


验证远程服务器实例配置
db2 list node directory
db2 list node directory show detail
ping hostname来验证通讯
使用telnet hostname port来验证是否能连到实例


另外,DB2提供了一个PCT工具来专门解决有关通讯的故障,如果上面的方法还没有解决你的问题,那么请参阅相关资料来使用它。


--------------------------------------------------------------------------------
作者:cq_1390263    时间:06-01-13 09:17

检查服务器的配置情况如下:

验证存在的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状态

(来源IBM教材)
为远程连接而准备 DB2 服务器

在 DB2 客户机能够连接到数据库以前,必须确保正确设置了服务器端通信。要准备将服务器用于 TCP/IP 和 NetBIOS 连接:

设置 DB2 概要文件注册表 DB2COMM,以使实例支持指定的通信,如下所示:

db2set DB2COMM=TCPIP,NETBIOS

在数据库管理器配置文件中为每个受支持的协议设置必需的信息。
对于 TCP/IP,为每个支持 TCP/IP 的实例分配一个端口号。名为 services 的文件包含在系统上定义的服务及其端口号。该文件的位置取决于平台。例如,在 UNIX 上,它通常被存储在 /etc 中。

由于一个端口号只能被一个服务使用,所以建议将 services 文件用作维护所有服务及其相关端口号列表的中央位置。要把 TCP 端口 50000 保留给名为 db2icdb2 的服务,可将以下行追加到 services 文件:
db2icdb2 50000/tcp

更新数据库管理器配置文件,以便 DB2 将把与服务 db2icdb2 相关的端口号用于您正在使用的实例:

db2 update database manager configuration using svcename db2icdb2

如果选择不使用 services 文件,只需用正确的端口号更新 svcename:

db2 update database manager configuration using svcename 50000

对于 NetBIOS,只需在数据库管理器配置文件中输入 NetBIOS 工作站名称(nname):
db2 update database manager configuration using nname DB2NTSERV

参数 svcename 和 nname 不能联机配置。先停止实例然后重新启动它,以便能够使用新值:

db2stop
db2start

论坛徽章:
0
8 [报告]
发表于 2006-12-14 12:34 |只看该作者
真是谢谢美女提供的帮助了啦!!
我会仔细研究的!

论坛徽章:
0
9 [报告]
发表于 2006-12-14 13:16 |只看该作者
很简单,你看到的DB2_db2inst1    60000/tcp这个端口不是实例端口,而是用于分区数据库间通信端口。
执行下面命令即可解决:
db2 update dbm cfg using SVCENAME  50001
db2stop
db2start


在客户端编目用50001端口:
db2 catalog tcpip node nodename ip   server   50001

就可以解决了

论坛徽章:
0
10 [报告]
发表于 2006-12-14 17:46 |只看该作者
谢谢楼上各位的帮助。
在IBM老巢找到了答案。
http://www-128.ibm.com/developer ... ong/0301chong2.html

终于联上了!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP