iSeries过程调用上的承诺控制错误

时间:2009-08-05 14:05:19

标签: stored-procedures ibm-midrange rpg

在调用iSeries存储过程(包含各种CL和RPG程序)时,我遇到了间歇性问题。错误是: -

 Commitment definition *N not valid for open of QAOSSI12
    Error occurred while opening file QAOSSI12. 

如上所述,问题并不总是发生,但在负载测试过程时会发生更多问题。

我知道这些信息含糊不清,但任何想法都值得赞赏!!

3 个答案:

答案 0 :(得分:0)

如果这是错误CPF4326,则消息文本提供以下可能性:

  • 当承诺定义* N未激活时,会员QAOSSI12已开启以进行承诺控制。
  • 对于除* N之外的承诺定义,成员QAOSSI12尚未提交更改。
  • 调用程序使用的是承诺定义* N,其范围为* ACTGRP,而指定的程序使用* JOB的ascope打开文件。

您的情况是否可能出现这些情况?

答案 1 :(得分:0)

我们一直在使用CPF4326,似乎正在运行的解决方案是在我们的jdbc URL中添加“transaction isolation = none”。我们并不是试图使用交易,因此启用它们没有任何好处。我们还怀疑iBATIS中的某些内容是在出现错误时尝试回滚事务,即使我们在承诺控制方面没有做任何明确的事情。

答案 2 :(得分:0)

您可以在编译时将COMMIT值更改为COMMIT(* NONE),然后不创建承诺定义。

Commit(COMMIT)命令用于完成当前事务并为与发出该命令的程序相关联的承诺定义建立新的承诺边界。

您还必须检查日志中是否有文件。