如果收到事务状态未知错误,如何处理带有事务的Oracle批量插入

时间:2016-06-08 08:36:15

标签: oracle transactions oci

在我的应用程序中,我使用以下函数使用了Oracle(OCI)批量执行。

OCIStmtExecute

对于所有正常情况,它按预期工作。一旦发生Oracle节点故障转移,它就会在提交中给出“ORA-25405”等拒绝。

ORA-25405: transaction status unknown

根据可用的指南,所有人都说“用户必须手动确定交易的状态”。

我的问题是,是否会出现我的批量插入/更新部分产生上述错误的情况?

1 个答案:

答案 0 :(得分:0)

来自http://docs.oracle.com/cd/B10500_01/appdev.920/a96584/oci16m89.htm

  

对于全局事务,事务可能现在处于不确定状态,这意味着事务既未提交也未中止。

这正是你的情况。这意味着交易未提交。

  

OCITransCommit()尝试从服务器检索事务的状态。状态将被返回。

然后解决方案是再次尝试使用OCITransCommit()提交事务,然后获取返回值并进行检查。