导致错误条件的独立操作

如果您(作为协调者数据库服务器管理员)在协调者发出其最终的落实决策后运行 onmode -z(停止协调者线程)或 onmode -Z(停止全局事务),那么将从协调者数据库服务器上的共享内存中除去所有事务的信息。

该操作不会被视为启发式决策,因为它不干扰两阶段协议;它可能是可接受的,或可能干扰了参与者恢复并导致错误。

在所有参与者可以毫无困难地落实事务的任何时候,该操作均是可接受的。在这种情况下,强制结束事务的操作是多余的。仅当协调者准备终止事务时,才会收到您运行了 onmode -Z 的指示。

但实际上,仅当您要尝试加快结束保持打开时间异常长的全局事务时,才可能会考虑在协调者数据库服务器上运行 onmode -zonmode -Z。在这种情况中,问题的来源可能是某些参与者数据库服务器上发生的故障。协调者尚未接收到参与者落实其工作片段的确认,而协调者正在尝试建立与参与者的通信以进行调查。

如果您在协调者正主动尝试重新建立通信的同时运行 onmode -zonmode -Z,那么协调线程会遵循您的指令而终止,但终止之前它会将错误 -716 写入数据库服务器消息日志。该操作被视为错误,这是因为两阶段落实协议被强制中断,使协调者不能确定数据库是否一致。

在协调者数据库服务器上停止全局事务不会被视为启发式决策,但它可能导致不一致的数据库。例如,如果参与者最终恢复联机但在协调者共享内存中找不到全局事务,它将回滚其工作片段,从而导致数据库不一致。