Die FINISH-Anweisung im Anwenderprogramm leitet das Zwei-Phasen-Ende-Protokoll ein.
Beim Zwei-Phasen-Ende-Protokoll werden Teiltransaktionen mit und ohne UPDATE-Kennzeichnung unterschieden. Jede Teiltransaktion hat zunächst unabhängig vom Eröffnungsmodus (READY) der Datenbank(en) keine UPDATE-Kennzeichnung. Erst nach erfolgreicher Ausführung einer ändernden DML-Anweisung in einer Datenbank erhält eine Teiltransaktion die UPDATE-Kennzeichnung.
Erste Phase des Zwei-Phasen-Ende-Protokolls
1. | Die Verteilkomponente in der Anwendertask sendet
Die PETA-Anweisung bewirkt, dass in der RLOG-Datei der jeweiligen Konfiguration ausfallsicher gespeichert werden:
|
In den noch folgenden Schritten ist mit „sekundäre Teiltransaktion“ grundsätzlich „sekundäre Teiltransaktion mit UPDATE-Kennzeichnung“ gemeint, da die übrigen sekundären Teiltransaktionen bereits abgeschlossen sind. | |
2. | Die sekundären Teiltransaktionen führen die PETA-Anweisung durch und melden der primären Teiltransaktion, ob die PETA-Anweisung ohne Fehler durchgeführt werden konnte oder nicht. |
3. | Wenn die primäre Teiltransaktion von jeder sekundären Teiltransaktion eine Meldung erhalten hat, prüft sie, ob die Durchführung der PETA-Anweisung bei allen sekundären Teiltransaktionen erfolgreich war. Abhängig davon wird 4a. oder 4c. durchgeführt. Falls die primäre Teiltransaktion nach Ablauf einer von PP CHCKTIME abhängigen Zeitspanne nicht von allen sekundären Teiltransaktionen eine Meldung erhalten hat, wird die primäre Teiltransaktion mit FINISH WITH CANCEL beendet und die sekundären Teiltransaktionen werden aufgefordert, sich ebenfalls mit FINISH WITH CANCEL zu beenden. |
Zweite Phase des Zwei-Phasen-Ende-Protokolls
4a.
Wenn alle sekundären Teiltransaktionen die PETA-Anweisung erfolgreich durchgeführt haben, wird die primäre Teiltransaktion mit Festschreiben der Änderungen (FINISH) beendet. Wenn der FINISH der primären Teiltransaktionen gelingt, wird 4b. ausgeführt. Falls der FINISH der primären Teiltransaktion nicht erfolgreich durchgeführt werden kann, werden die sekundären Teiltransaktionen zurückgesetzt.
4b.
Alle sekundären Teiltransaktionen werden aufgefordert, sich mit FINISH zu beenden.
4c.
Wenn nicht alle sekundären Teiltransaktionen die PETA-Anweisung erfolgreich durchführen konnten, wird die primäre Teiltransaktion mit Zurücksetzen der Änderungen beendet (FINISH WITH CANCEL) und es werden die sekundären Teiltransaktionen aufgefordert, sich ebenfalls mit FINISH WITH CANCEL zu beenden.