DB2数据库常见问题汇总

DB2数据库常见问题汇总

1.1        创建存储过程时需要注意变量声明的顺序

创建存储过程时,声明变量顺序不符合规范将提示:

SQL0104N  An unexpected token "<variable declaration>" was found following "".

Expected tokens may include:  "<SQL statement>".  LINE NUMBER=11.

SQLSTATE=42601

解答:声明变量、游标以及条件处理要有序进行;普通变量声明在先,其次到游标的声明,最后才能声明condition handler。

1.11    因为死锁或超时,所以当前事务已回滚。
当前事务因死锁或超时而回滚,将提示:

SQL0911N The current transaction has been rolled back because of a deadlock or timeout.  Reason code "2".

根据原因码确定具体原因,原因码如下:

2  由于死锁而导致事务已回滚。

68  由于锁定超时而导致事务已回滚。

72  因为存在与事务中所涉及的 DB2 Data Links Manager 有关的错误,所以事务已回滚。

常见原因码为2、68。应用程序已回滚至上一次 COMMIT。

解答:为了帮助避免死锁或锁定超时,对长时间运行的应用程序或有可能遇到死锁的应用程序频繁发出 COMMIT 操作(若有可能的话)。并适当地增大锁超时时间:db2 update db cfg using LOCKTIMEOUT 60(此处60秒为例)。

 

1.12    在客户端查询数据库中文信息会产生乱码
解答:在服务器端或客户端将编码类型设置为1208以支持中文:db2set DB2CODEPAGE=1208。

1.13    重启动机器后,用于创建表空间的裸设备与逻辑卷挂接失效,数据库无法使用,提示:SQL0290N  Table space access is not allowed.  SQLSTATE=55039
解答:按原来的对应关系重新将裸设备和逻辑卷挂接起来;或创建一个机器重启时自动执行的脚本,将该脚本放在/etc/init.d目录下,并在/etc/init.d/rcN.d(N为当前系统运行级别,使用runlevel或who –r获得,不同系统命令不同)目录下建一个硬连接。

1.14    编目时确保使用正确的服务端口号
若在编目时使用的服务端口号与通过db2 get dbm cfg | grep SVCENAME查看到不一致,那在连接节点或数据库时,将出现如下提示信息:

db2inst1@osta1:~> db2 connect to l2cache

SQL30081N  A communication error has been detected.  Communication protocol

being used: "TCP/IP".  Communication API being used: 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值