DB2 SQL 错误(SQLCODE:-964,SQLSTATE:57011)处理方法

故障现象描述:

执行 SQL 语句时,出现类似如下错误消息。

指令 SQL:insert into t_stat_file_temp
SQLSTATE:57011,供应商错误代码:-964
DB2 SQL 错误:SQLCODE:-964,SQLSTATE:57011,
SQLERRMC:空

故障原因说明:

数据库堆中没有足够的存储空间可用于处理该语句,此错误消息是事务日志中耗尽空间的结果。

故障处理方式:

1 方式一:扩展事务日志存储空间

通过类似如下语句调整主日志文件数,以及辅助日志文件数。
例如:分配八个主日志文件,同时最多分配 100 个辅助日志文件。注意:辅助日志文件将根据需要进行分配,并在不需要时删除

db2 update db cfg for $DBNAME using logprimary 8
db2 update db cfg for $DBNAME using logsecond 100

2 方式二:处理异常事务

如果出现因事务异常导致事务日志存储空间不足的情况,则单纯扩展存储空间往往难以彻底解决问题,因此需要本方式提供了彻底排查的步骤。
注意:以下操作均在 db2 connect to $DBNAME 连接至数据库后执行。

2.1 定位异常的数据库节点

通过如下语句,查看各节点的日志空间使用情况,定位事务日志空间使用率(LOG_UTILIZATION_PERCENT)过高的节点。

db2 " select DB_NAME, LOG_UTILIZATION_PERCENT, TOTAL_LOG_USED_KB,TOTAL_LOG_AVAILABLE_KB,TOTAL_LOG_USED_TOP_KB, DBPARTITIONNUM
from SYSIBMADM.LOG_UTILIZATION order by DBPARTITIONNUM "

执行结果类似如下。

2.2 检查异常活动连接

在事务日志空间使用率过高的节点上,执行如下命令,定位是否存在事务日志使用量(UOW_LOG_SPACE_USED)过高的活动连接

db2 "select APPLICATION_HANDLE,UOW_LOG_SPACE_USED,UOW_START_TIME
from TABLE(MON_GET_UNIT_OF_WORK(NULL,-1))
order by UOW_LOG_SPACE_USED"

若存在异常的活动连接,则可以通过类似如下命令终止。

db2 "force application (h1 [,h2,..hn])"

h1 [,h2,..hn] 代表 application handle identifier

2.3 检查不确定事务(In-doubt transaction)

在事务日志空间使用率过高的节点上,执行如下命令,以交互模式定位是否存在不确定事务(In-doubt transaction)。

db2 list indoubt transactions with prompting

若存在不确定事务,则可以通过交互命令进行 COMMIT 或 ROLLBACK 等操作,具体操作参见 WITH PROMPTING 模式的说明。

Command parameters WITH PROMPTING Indicates that indoubt transactions are to be processed. If this parameter is specified, an interactive dialog mode is initiated, permitting the user to commit, roll back, or forget indoubt transactions. If this parameter is not specified, indoubt transactions are written to the standard output device, and the interactive dialog mode is not initiated.
Interactive dialog mode permits the user to:

  • List all indoubt transactions (enter l)
  • List indoubt transaction number x (enter l, followed by a valid transaction number)
  • Quit (enter q)
  • Commit transaction number x (enter c, followed by a valid transaction number)
  • Roll back transaction number x (enter r, followed by a valid transaction number)
  • Forget transaction number x (enter f, followed by a valid transaction number).

A blank space must separate the command letter from its argument.

参考资料:

  1. https://www.ibm.com/support/knowledgecenter/zh/SS5R93_5.2.8/com.ibm.spectrum.sc.doc/fqz0_r_tbs_db2_sql_964.html
  2. https://www.ibm.com/support/knowledgecenter/en/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001963.html
  3. http://www.talkwithtrend.com/Article/185911

原文地址:https://www.cnblogs.com/autopenguin/p/10801635.html

时间: 2024-11-09 06:18:26

DB2 SQL 错误(SQLCODE:-964,SQLSTATE:57011)处理方法的相关文章

DB2 SQL Error: SQLCODE=-1585, SQLSTATE=54048

DB2 执行SQL报错: DB2 SQL Error: SQLCODE=-1585, SQLSTATE=54048 你建的db2数据库没有建足够大的临时表空间,新建一个足够大的临时表空间 1.创建数据库 db2 "create database testdb automatic storage yes on /dbauto dbpath on /database using codeset UTF-8 territory cn collate using system" dbpath

DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=2 (转载)

http://blog.csdn.net/xiyuan1999/article/details/5706230 DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=2 . 1.查了下,大概意思是违反了唯一性约束啊! 2.不过,我db2 describe table XX后发现这个表只有ID是不能为空的啊! 3.最后,直接写了条SQL在命令行执行,同样的错和代码 最后,我查了下表的索引,发现建了个组合索引,才恍然大悟. 原来,DBA昨天建了唯

DB2:在缓冲池 "1" 中当前没有任何页面可用。. SQLCODE=-1218, SQLSTATE=57011, DRIVER=3.61.75

服务器端DB2数据库最近频繁报错: 在缓冲池 "1" 中当前没有任何页面可用.. SQLCODE=-1218, SQLSTATE=57011, DRIVER=3.61.75 试验发现简单的查询SQL执行没有问题,复杂的SQL就会报上述错误. 百度发现是因为数据库bufferpool太小,需要增加bufferpool大小. 操作步骤: 1.查看默认IBMDEFAULTBP大小: 2.设置IBMDEFAULTBP大小为12800: 3.重启数据库实例,然后执行复杂SQL,发现已经没有问题了

数据库报错: SQLCODE: -418, SQLSTATE: 42610, SQLERRMC: null

我在用org.springframework.jdbc.core.JdbcTemplate执行这样一句sql时报错了: INSERT INTO customerbranch ( id , OPTIMISTIC , frp_id , paymentchannel , customer_id ,bank_id ,updatetime) SELECT NEXT VALUE FOR customerbranch_ID_SEQUENCE , 0, 1005, 'NET' , ?, bankid , CUR

常见DB2 sql错误码积累

DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001:原因:sql中要更新的某个字段的长度超过了数据库表中字段的定义长度. SQLCODE=-407, SQLSTATE=23502:原因:把NULL值插入到定义为NOT NULL的列中.也就是违反了完整性约束异常. SQLCODE=-803, SQLSTATE=23505:原因:自增id违反唯一性约束,使用insert 语句进行插入新的记录时,可以将自增id设为"DEFAULT". 例:insert i

db2 常见错误以及解决方案[ErrorCode SQLState]

操作数据库流程中,遇到许多疑问,很多都与SQL CODE和SQL State有关,现在把一个完整的SQLCODE和SQLState不正确信息和有关解释作以下说明,一来可以自己参考,对DB2不正确自行找出原由 sqlcode sqlstate 说明 格式说明:ErrorCode:-302 SQLState:22001 ------------------------------------------- 000 00000 SQL语句成功完成01xxx SQL语句成功完成,但是有警告+012 01

DB2 Error : SQLCODE=-802,SQLSTATE=22003 异常的原因

使用DB2时,报错为 DB2 Error : SQLCODE=-802,SQLSTATE=22003 主要原因: 是我们sql语句使用某个字段*86400后结果非常大,导致无法返回结果:因为某个字段*86400后的结果是一个整数型的数据 ,位数不能超过限定 解决的办法: 在其前面的字段加上double,这样就可以扩大数据值的范围 原文地址:https://www.cnblogs.com/xuyufengme/p/10842450.html

MySQL · 性能优化 · MySQL常见SQL错误用法

前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来.但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况.阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题.现将<ApsaraDB专家诊断报告>中出现的部分常见SQL问题总结如下,供大家参考. 常见SQL错误用法 1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如

Java程序员可能犯的3个常见SQL错误

概述:Java程序员不仅要具备扎实的Java编程能力,在日常的工作当中往往还要涉及到其他语言的基础知识,尤其是SQL.那么哪些常见的SQL错误是程序员们容易犯的呢?让我们一起来看看吧! 你可能看到Java程序员每周的工作是编码开发一个可伸缩的Web应用程序,或创建一个动态的网站,或者开发高效的电子商务产品页面,也可能是开发一个Android应用程序等等.但是,即使他们致力于不同的项目,却往往都有一个共同点,那就是编程! 他们的职业要求长时间的工作来积累更多的编程知识.Java程序员还需要了解项目