ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2019-05-02 09:41:20  阅读:860  来源: 互联网

标签:964 事务 transaction LOG number 57011 SQLSTATE 日志 db2


故障现象描述:

执行 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

标签:964,事务,transaction,LOG,number,57011,SQLSTATE,日志,db2
来源: https://www.cnblogs.com/autopenguin/p/10801635.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有