DB2出错的一些情况和解决方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sql1032N解决方法
最近DB2频频出现错误,搞的头都晕了,最主要的就是SQL30081错误,下面乱七八糟的汇集了一些问题:
1、DB2中几种遇到的SQL1032N出错的解决
在使用DB2以来,碰到了几次出现提示SQL1032N错误,每次出错时出错信息大概如下:
11/21/2004 22:15:33 0 0SQL1042C 发生意外的系统错误。
SQL1032N未发出启动数据库管理器的命令。
SQL STATE=57019。
每次出现问题后,都到网上找了很多资料,也问了许多人,费了些力才搞定的。
几次出错的原因和解决方法都不尽相同,解决后我也只做了个简单的记录。
一直想把它们写下来,方便方便后来也遇到同样问题,跟我一样到处查找的人,中间也写了一些废话,比如我如何查找错误,甚至于作了哪些无用功。
第一种SQ L1032N出错,是某天DB2的实例突然无法启动了,用db2start就提示
大概如下的出错信息:
12/30/2004 11:28:39 0 0SQL1042C 发生意外的系统错误。
SQL1032N未发出启动数据库管理器的命令。
SQLS TATE=57019。
初次遇到这种问题,还以为会不会是数据库没起来,情急之下什么命令比如激活数据库只类的,都拿来试了试,实例都起不来,当时运行这些命令,肯定都是不行的了。
后来突然发现,在开启机器的时候,提示有个服务出错了没启动,由此推想应该就是在Win dow服务里设置为自动启动的D B2实例服务没有正常启动,我在服务里面手动启动它,提示这样的错误:
WIND OWS不能在本地计算机启动DB2-DB2-0.有关更多信息,查阅系统事件日志.并参考特定服务代码-8000.
查看事件管理器,有这样的记录:
DB2-DB2-0服务因4294959296服务性错误而停止.来源S ERVIC E CON TROL事件ID:7024
做了这么多,全都是无用功,只限于知道了服务没起来,等于没找。
之后通过各方询问,终于找到了原因:Lice nse到期了。
在d b2cmd界面下运行db2li cm -l,可以很明显的看到许可证已经过期了。
知道原因所在了,剩下的,就是自己想办法去解决这个问题了。
小结:直到现在,在有些论坛中,还很经常看到有人发这种帖子来问,至少我在两个月内就碰到了三次这种帖子。
所以,如果不是可以确定已经有永久授权的情况下,发生这种情况,用db2l icm -l查一下,也不算坏事。
还有一种情况,跟前面的差不多
也是在启动实例的时候出现如上的S QL1032N错误。
在wind ows N T服务中无法启动DB2-DB0服务,同时提示:
出错1069,登陆失败错误。
这个错误比较简单,是用来启动服务的用户名或密码错误。
只需要在服务的属性中,选择登陆选项卡,选择用户,并填好密码,重新启动服务就可以了。
小结:这种情况,一般发生在切换用户登陆NT系统或者更改了DB2用户的密码的情况下。
第三种情况是这样的:
最开始,是突然DB2的客户端连接不上ser ver了,提示如下:
C:Docum entsand S ettin gsAdm inist rator>db2conne ct to fjdl dw us er in stall usin g
ins tall3211
S QL30081N 检测到通信错误。
正在使用的通信协议:"TC P/IP"。
正在使用的通信AP I:
"S OCKET S"。
检测到错误的位置:"10.142.12.1"。
检测到错误的通信函数:
"co nnect"。
协
议特定的错误代码:"10061"、"*"、"*"。
SQLST ATE=08001
我本来还以为真是什么TCP/IP协议的问题,去查找了很多与SQL30081N错误相关的信息,都无法解决问题。
后来到了在服务器上检查,发现DB2实例未起来。
用db2s tart命令,仍是提示:
D:Pro gramS QLLIB BIN>d b2sta rt
12/30/200411:28:39 0 0 SQ L1042C 发生意外的系统错误。
S QL1032N 未发出启动数据库管理器的命令。
S QLSTA TE=57019
用db2 getdbm c fg查看配置文件,因未作过其他操作,所以没有什么异常
查看相应实例下的db2di ag.lo g文件,摘取真正有用的部分出错日志:
Fail ed to crea te th e mem ory s egmen t use d for comm unica tionwithfence d rou tines. Ifre-st artin g db2, ens ure n o db2fmp p roces ses w ere o n the inst anceprior to s tart. Othe rwise, you canajust this valu e thr oughDB2_F MP_CO MM_HE APSZdb2se t val ue, o r by
decre asing your ASLH EAPSZ sett ing.
依据e nsure no d b2fmp proc esses were on t he in stanc e pri or to star t,将任务管理器里的db2fm p进程全部杀掉,然后重新启动实例。
db2start,OK!
小结:后来查了一查,db2fmp进程用于执行受保护的存储过程,或者自定义函数。
这次出错的原因,一直没有弄清楚。
但是,通过这次解决,可以说明一点,出了错误,查查db2d iag.l og文件,总是不会错的。
^_^
2、DB2许可证过期问题解决 && Ecli pse之中jdbc调用DB2
最笨的办法是将系统日期向前调。
使用的连接字符串如"jdbc:db2://10.10.50.194:50000/eban k",在获取连接时出现异常如下:“com.ibm.db2.j cc.c.Disco nnect Excep tion: enco dingnot s uppor ted!!”。
在搜索Googl e未果后只好自己硬着头皮找办法解决。
发现另外一个同事在WSA D中连接正常(我用的Eclip se),灵机一动将引用的JRE从Sun的标准JDK1.4.2换成了
WS AD带的I BM的JD K1.4,连接时正常!又是一个JDK的问题啊。
只之后可能会出现一个lice nse的问题,需要将DB2之中的几个
db2jcc_licen se_ci suz.j ar以及d b2jcc_lice nse_c u.jar加入到项目之中去。
但是这样仍然存在Times tamp从数据库之中不能用,R esult Set.g etTim estam p()读出来的问题?如何解决?
耗了我将近一天的时间的采用"com.ibm.d b2.jc c.DB2Drive r"连接D B2数据库的时候,读取Time stamp类型的数据的时候老是出现异常的情况,报告出现
Arr ayOut ofInd ex什么的错误。
今天,终于把它给解决了,原来,使用的DB2V8.1之中带的db2jcc.jar包是不正确的,改成了DB2 V8.2之中的带的db2j cc.ja r包程序就运行正确了。
经验,JDBC连接DB2数据库的时候出现的很多的奇怪的问题是由包不对所导致的,遇到这种问题一定要检查所使用的驱动的包是否正确。
3、SQL30081N检测到通信错误。
正在使用的通信协议:"T CP/IP"。
正在使用的通信A PI:"S OCKET S"。
检测到错误的位置:"192.168.1.12"。
检测到错误的通信函数:"c onnec t"。
协议特定的错误代码:"10061"、"*"、"*"。
SQLST ATE=08001
遇到该问题,有以下几种方法去查找原因:
一、看看端口号有没有配置正确,看一下配置参数s vcena me跟se rvice s文件中配置的db2端口号是否一致,wi ndows一般用50000,u nix/l inux一般用60000
二、连接出错首先看看服务器ip 和端口写对没有
ip如果没错就要看看服务器的db2服务端口对不对。
另外对于服务器下面这些也要注意
检查服务器的配置情况如下:
验证存在的DB2数据库
db2 lis t dbdirec tory
db2 l ist d b dir ector y sho w det ail
验证实例使用的通讯协议,查看DB2COMM变量
db2set-all
查看数据库管理器的配置,查看S VCENA ME(特指tcpip协议)
d b2 ge t dbm cfg
查看/et c/ser vices中,有无与上面对应S VCENA ME的端口,例如:
db2cD B2 50000/t cp
要确认服务器是否在监听,可以用netst at -a n 来查看端口是否处于LIST EN状态。