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

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/

DB2常用命令 db2level 显示db2的版本号 显示SQL出错信息 db2 "? sql6031" db2mtrk 管理DAS 产生:root运行-dascrt -u dasuser1 删除:root运行-dasdrop 启动:dasusr1运行-db2admin start 停止:dasusr1运行-db2admin stop db2_kill ipclean db2start dbpartitionnum 9 restart AIX启动控制中心: db2cc DB2用户管理: db2 use os to manage users.You can use following steps to add a db2 user: 1,add a user on os. 2,grant rights to user. GRANT CREATETAB,CONNECT ON DATABASE TO USER FUJIE; grant select, update, delete on table employee to user john with grant option 一,实例 产生 db2icrt -a AuthType(SERVER,CLIENT,SERVER_ENCRYPT) -p PORT_NAME 表空间PREFETCHSIZE的设置,EXTENTSIZE的关系,缓冲池的监控,页清除程序的多少。 临时表空间页面大小与其他表空间页面大小的设置,临时表空间与缓冲池的设置。 example:db2icrt db2 -s ese -p d:\db2 -u Administrator 注意:在UNIX 上产生实例时需要产生一个和实例名称相同的用户名,和fencedid 用户。 如:db2icrt -s ese -u db2fenc2 db2inst2 将在db2inst2用户中产生实例db2inst2. 缺省创建32位实例,创建64位实例:db2icrt -s ese -w 64 -u db2fenc2 db2inst2 删除 db2idrop instance-name 启动 db2start 停止 db2stop force 连接 db2 attach to testdb2 db2 detach 列出实例 db2ilist 设置当前实例 set db2instance= 得到当前实例 db2 get instance 设置实例自动重启动UNIX db2iauto -on db2iauto -off 获取实例的配置参数 db2 get dbm cfg 修改配置参数 例如:db2 update dbm cfg using authentication server_encrypt db2stop and db2start 二,声明注册表和环境变量 db2set 注意:设置完成后需要退出用户,再注册进入才能生效。 列出所有受支持的变量 db2set -lr 列出当前实例所有已定义的变量 db2set 要列出概要文件注册表中所有定义的注册表变量 db2set -all 列出单个变量 db2set registry_variable_name 更改变量 db2set registry_variable_name=new_value 变量复位为缺省值 db2set -r registry_variable_name db2set DB2CODEPAGE=819 db2set DB2CODEPAGE=1386 db2 -tvf my_sql.sql 三,创建节点配置文件 db2nodes.cfg UNIX 格式:dbpartitionnum(0-999) hostname [logical-port [netname]] WIN 格式:nodenumber hostname computername logical_port netname
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值