When to perform a heuristic end transaction
You must run the onmode -Z option to initiate a heuristic end transaction in only one, rare, situation. This situation occurs when a piece of work that has been heuristically rolled back remains open, preventing your logical-log files from becoming free. As a result, the logical log is dangerously close to full.
In general, the coordinator issues its commit-or-rollback decision within a reasonable period of time. However, if the coordinator fails and does not return online to end a transaction that was heuristically rolled back at your participant database server, you might face a serious problem.
- The participant thread that is executing a piece of work on behalf of a global transaction has sent a can commit response to the coordinator.
- The piece of work waits for instructions from the coordinator.
- While the piece of work is waiting, the logical log fills past the long-transaction high-watermark.
- The piece of work that is waiting for instructions is the source of the long transaction. The participant database server directs the executing thread to roll back the piece of work. This action is a heuristic rollback.
- The participant continues to wait for the coordinator to direct it to end the transaction. The transaction remains open. The logical log continues to fill.
If the coordinator contacts the participant and directs it to end the transaction in a reasonable period of time, no problem develops. The serious problem arises if the heuristic rollback occurs at a participant database server and subsequently the coordinator fails, preventing the coordinator from directing the participant to end the transaction.
As a consequence, the transaction remains open. The open transaction prevents you from backing up logical-log files and freeing space in the logical log. As the logical log continues to fill, it might reach the point specified by the exclusive-access, long-transaction high-watermark (LTXEHWM). If this point is reached, normal processing is suspended. At some point after the high-watermark is reached, you must decide if the open transaction is endangering your logical log. The danger is that if the logical log fills completely, the database server shuts down, and you must perform a data restore.
You must decide whether to end the transaction and protect your system against the possibility of filling the logical log, despite all the problems associated with running onmode -Z, or to wait and see if communication with the coordinator can be reestablished in time to end the transaction before the logical log fills.