【问题标题】:How to handle Oracle bulk inserts with transactions if a transaction state unknown error is recived如果收到事务状态未知错误,如何使用事务处理 Oracle 批量插入
【发布时间】:2016-06-08 08:36:15
【问题描述】:

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

OCIStmtExecute

在所有正常情况下,它都能按预期工作。一旦发生 Oracle 节点故障转移,它会在提交中给出诸如“ORA-25405”之类的拒绝。

ORA-25405: transaction status unknown

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

我的问题是我的批量插入/更新是否会部分工作并给出上述错误?

【问题讨论】:

  • 嗨 Sujith,目前尚不清楚您是要避免异常还是要捕获它并解决问题。你的标题和结尾的会有情景之间似乎有矛盾...
  • 实际上我需要捕获错误并采取解决方法。因为即使TAF配置正确,也有可能出现同样的错误。
  • 并且您想知道是否已插入行,即使在提交时出现错误?我建议您编辑您的问题并使其更清晰。

标签: oracle transactions oracle-call-interface


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-20
    • 2021-02-17
    • 1970-01-01
    • 2015-02-15
    • 2015-11-23
    • 2015-01-19
    • 2017-02-07
    • 1970-01-01
    相关资源
    最近更新 更多