启发式回滚

您可以用以下方法来确定启发式决策所影响的特定数据库服务器参与者,从而回滚事务:
  • 检查应用程序中 COMMIT WORK 语句的返回码。
    以下消息指示有一个参与者执行了启发式回滚:
    -698 Inconsistent transaction. Number and names of servers rolled back. 
    
  • 检查数据库服务器消息日志文件的消息。
    如果由于参与数据库服务器上的启发式决策导致有可能出现数据库不一致,那么协调者的数据库服务器消息日志文件中会出现以下消息:
    Mixed transaction result. (pid=nn user=user_id)
    

    无论何时返回错误 -698,均会写入该消息。与该消息相关联的是事务回滚所涉及的参与者数据库服务器的列表。这是完整的列表。 如果大量参与者回滚了该事务,那么与 -698 错误消息一起创建的列表可能会被截断。

  • 检查每个参与者的逻辑日志。

    如果至少一个参与者回滚了其工作片段并且一个参与者落实了其工作片段,那么事务将不正确地实现。