【发布时间】:2015-02-10 11:34:13
【问题描述】:
今天我被甲骨文没有实现的成功 2pc 击中。另一个参与者是 MSMQ,它实现得很好。
问题是我在应用程序中没有收到异常(使用 c# odp.net)。后来我在 sys.dba_2pc_pending 中找到了 In-Doubt Transactions。
我能否在我的应用程序中检测到这一点?
编辑:这不是让 2pc 工作。它确实有效,并且持续了一年多,直到有一天某些行丢失。请阅读 In-Doubt Oracle 事务link1 和待处理事务link2
【问题讨论】:
-
也许您可以向我们展示您的异常处理代码......并且您应该确保它实际上正在处理其他 ORA 错误。有一个 OracleException 类。
-
其实并没有异常处理,因此无法吞下错误。另一个参与者(MSMQ)也确实提交得很好。逻辑在 Nservicebus 处理程序中运行。
-
你能发布示例代码吗?我假设您正在使用 system.transaction?
-
NServicebus 使用 system.transaction,我的代码没有。我在 DTC 中使用 NHibernate/odp.net paticpanting 和由 NServicebus 创建的 MSMQ。
标签: oracle odp.net 2phase-commit