我有一个分布式事务,包装可以说3个其他人。其中一个内部交易失败,ORA-02049。阴险的是,外部交易和其他交易很好,因为交易经理首先从所有3个交易中获得了他们将成功的交易。一个事务因ORA-02049而失败并正确回滚。但总体而言,系统处于不一致状态,因为系统期望所有交易都通过。
数据库不在我们的控制之下,我们必须使用它。我们的客户端使用了一些愚蠢的非Oracle复制软件,它首先负责出错。
在我看来,我们希望以一种处理此类错误案例自动的方式设计系统不合理!你会如何回应这样的要求?
如果事务经理说它会提交,提交实际会通过,那么我们是错吗?
你会如何处理这样的问题 - 我们整个软件都希望数据库能够完美运行 - 这是一个错误的假设吗?
答案 0 :(得分:0)
我会让客户向第三方软件供应商提出错误。我会向客户说明问题是由他们的系统中的错误,有效的错误引起的。然后我会指出他们可以选择,要么等待来自第三方的错误修复,要么支付更改请求,以便您的软件代码围绕它。
当然,如果你真的让他们支付CR费用,这取决于你和公司的关系等,但要明确这是额外的工作,而不是你的错。