Ibm midrange 如何使用挂起的更改调用ENDCMTCTL?
我的iSeries ILE程序因未提交的更改而崩溃。 现在我想用ENDCMTCTL结束承诺控制(要再次启动程序,程序启动承诺控制本身),但失败了,消息如下:Ibm midrange 如何使用挂起的更改调用ENDCMTCTL?,ibm-midrange,rollback,crash-recovery,Ibm Midrange,Rollback,Crash Recovery,我的iSeries ILE程序因未提交的更改而崩溃。 现在我想用ENDCMTCTL结束承诺控制(要再次启动程序,程序启动承诺控制本身),但失败了,消息如下: CPF8355 - ENDCMTCTL not allowed. Pending changes active 是否有一种方法可以回滚/提交更改并以正确的方式结束提交控制?我的经验更丰富的同事建议只需注销并开始新的会话 编辑 我尝试过WRKCMTDFN和其中的所有操作,但都没有成功。 强制回滚和强制提交失败,消息为: CPD83ED -C
CPF8355 - ENDCMTCTL not allowed. Pending changes active
是否有一种方法可以回滚/提交更改并以正确的方式结束提交控制?我的经验更丰富的同事建议只需注销并开始新的会话
编辑
我尝试过WRKCMTDFN和其中的所有操作,但都没有成功。
强制回滚和强制提交失败,消息为:
CPD83ED -Commitment definition not eligible for forced rollback ...
... 2 -- The logical unit of work, for this commitment definition, is not in
an undecided state.
在它出现之后,你就无能为力了。我希望您能够根据以下内容提交更改或回滚更改:
如果交互式作业有未提交的更改,则会显示一条消息
已发送,询问用户是否应提交或滚动更改
在承诺定义结束之前返回。对于批处理作业
更改将回滚
因为您没有获得此选项,我认为您的作业已经开始提交(或回滚)过程,此时您无法更改它。因此,您只有一个注销的“选项”——这将结束您的工作和相关的承诺控制。消息ID可能是CPF8355,第二级文本有助于了解情况:
Cause . . . . . : An attempt was made to end commitment control for
commitment definition &1. However, there are one or more active resources
under commitment control for the commitment definition. The resources could
be one of the following:
-- Local files
-- Remote files
-- API commitment resources
-- Remote SQL database
使用WRKJOB选项(*CMTCTL)查看哪些资源仍然处于打开状态并处于承诺控制之下。如果有打开的文件,程序应在尝试ENDCMTCTL之前将其关闭。如果在这种情况下,对RPG程序的重复调用导致文件因性能原因而保持打开状态,请使用特殊参数最后调用一次,该参数将告诉RPG程序关闭文件。或者,如果它是一个ILE程序,那么考虑RCalcGrp.是的,它看起来像提交/回滚过程已经启动,我已经修改了一些问题。details@Piro-我认为在这一点上,你所能做的就是终止你的工作(结束会话、结束工作等等)。听起来好像提交/回滚已经发生了,但是一些资源还没有关闭——类似于Buck描述的场景,在RPG程序中,文件保持打开状态,而LR没有打开。RCLACTGRP部分工作。我必须关闭我们用来回收激活组的IDE(营业额)。RCLACTGRP之后,状态保持不一致,并且系统中的另一个程序调用失败-
MCH3402-试图引用不再存在的对象的全部或部分
。就像@Benny说的,结束工作似乎是唯一有效的选择。我原以为离职是一种变革管理系统,但我不使用它。您是否从内部调用您的程序?这可能会增加混乱。从命令行调用您的程序,看看它是否能与RCLACTGRP一起工作。我的错误,不是IDE!从命令行OK运行时的行为是相同的,因此在AG中似乎也有一个服务程序。您能否将问题程序放在一个单独的、命名为激活组的组中,然后仅回收该AG?单独的激活组运行良好-在RCLACTGRP之后不再出现问题。谢谢你的帮助。