采用XA方式时,当某个参与方出现异常终止时,由于该参与方没有明确进行事务提交或者回滚,可能导致该事务一直处于挂起状态,出现事务挂起时,由于该事务并未结束,所以会一直占用活动日志,这样比较容易造成活动日志空间快速耗尽的状况。
检查数据库系统中是否存在挂起事务的方式如下:
db2 list indoubt transactions |
如果上述命令执行的结果包含输出数据,则表明系统中存在挂起的事务,此时上述命令的输出结果可能如下:
1. originator: XA appl_id: NF000001.BB69.090911122523 sequence_no: 0019 status: i timestamp: 09/11/2009 20:25:17 auth_id: DB2IMBFE log_full: n type: RM xid: 000200030000001D 0000001B312D2D33 616663663863363A 626232653A346161 61343030313A3335 342D336166636638 63363A626232653A 3461616134303031 3A333565
2. originator: XA appl_id: NF000001.BB65.090911122528 sequence_no: 0015 status: i timestamp: 09/11/2009 20:25:17 auth_id: DB2IMBFE log_full: n type: RM xid: 000200030000001D 0000001B312D2D33 616663663863363A 626232653A346161 61343030313A3335 382D336166636638 63363A626232653A 3461616134303031 3A333635
|
由于出现事务挂起时会快速耗尽活动日志空间并导致数据库系统终止,所以,需要尽快解除挂起的事务,解除事务挂起的方式如下:
db2 list indoubt transactions with prompting 执行该命令后,系统将会提示三种解除挂起的方式,分别为: 提交(commit)( enter c, followed by a valid transaction number)、 回滚(rollback)( enter r, followed by a valid transaction number)、 忘记(forget)( enter f, followed by a valid transaction number),由于不明确原始语句是否真正满足提交条件,因此,采用回滚或者忘记的方式更为合理。 备注:事务号对应originator: XA前面的序号。 一般情况下需要先执行c/r,之后再执行l,如果还有输出内容,再执行f |
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论