欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

db2报错,错误码 -805,SQLERRMC NULLID.SYSLH203 0X5359534C3031。解决方案

程序员文章站 2022-11-20 15:35:02
db2报错,错误码 -805,SQLERRMC NULLID.SYSLH203 0X5359534C3031。解决方案今天在客户服务器部署项目,发现了一个坑,这个坑本地是没有的。不知为何客户的环境会出这样一个问题。废话不说,直接说解决方案。连接至客户的db2数据库。1)用db2对应的账号登录到服务器(我们的是db2inst)。2)进入db2目录:cd /opt/ibm/db2/V10.5/bnd/。依次执行以下命令。1)db2 connect to dataBaseName(你要操作的数据库名...

db2报错,错误码 -805,SQLERRMC NULLID.SYSLH203 0X5359534C3031。解决方案

今天在客户服务器部署项目,发现了一个坑,这个坑本地是没有的。不知为何客户的环境会出这样一个问题。废话不说,直接说解决方案。

  1. 连接至客户的db2数据库。
    1)用db2对应的账号登录到服务器(我们的是db2inst)。
    2)进入db2目录:cd /opt/ibm/db2/V10.5/bnd/。
  2. 依次执行以下命令。
    1)db2 connect to dataBaseName(你要操作的数据库名)。如果连接成功的话,湖出现你对应数据库的简略信息,失败的话可以用这个命令试一下(db2 ipclean);
    2)db2 bind @db2cli.lst blocking all grant public sqlerror continue CLIPKG 5。(我第一次设置的CLIPKG 5,但是后续继续报错SQLERRMC NULLID.SYSLH205,然后设置为CLIPKG 20就好了)执行完成后会有个提示信息(Binding was ended with “0” errors and “0” warnings)如果error不是"0"的话,检查一下语法是不是输错了;
    3)db2stop force。(成功的话,会提示successful。如果出错的话,可以尝试一下第1步的解决办法);
    4)db2start 。成功的话,会提示successful。如果出错的话,可以尝试一下第1步的解决办法);
  3. 至此,该问题便已经解决了,看了好多博客,这种情况大致是DB2在执行SQL语句的时候会使用内部定义的包(package)来保持不同级别的游标的稳定性,包的名字就是 “NULLID.SYSLH2XX”。DB2里面默认的时候会创建3个这样的包即SYSLH200, SYSLH201, SYSLH202,而当你的程序报“找不到程序包”的错误,并且程序包的名字的序号大于SYSLH202,也就说明DB2默认的包不够用了,DB2要求使 用更多的包,但是这些包在DB2中并没有创建,因此DB2抛出了异常。
  4. 我们所做的操作就是增加默认包的数量,这样db2就不会因为找不到包而报错了。

参考链接:http://scripthome.blog.163.com/blog/static/4060885020104132397672/

本文地址:https://blog.csdn.net/ZAuxloser/article/details/107659156

相关标签: DB2 db2数据库