In diesem Abschnitt erhalten Sie einen Überblick über die Funktion zum Aktualisieren auf mehreren Systemen für Szenarios mit Host- und AS/400-Datenbank-Servern. Dabei werden die Produkte und Komponenten beschrieben, die zum Implementieren von PC-, UNIX- und Web-Anwendungen notwendig sind, um mehrere DB2-Datenbanken in einer einzigen Transaktion zu aktualisieren.
Das Aktualisieren auf mehreren Systemen, auch als "verteilte Arbeitseinheit" (DUOW - Distributed Unit of Work) und zweiphasige Festschreibung bezeichnet, ist eine Funktion, die es Ihren Anwendungen ermöglicht, Daten auf mehreren fernen Datenbank-Servern zu aktualisieren und gleichzeitig ihre Integrität zu wahren. Ein Beispiel hierfür ist eine Banktransaktion, bei der Geld von einem Konto auf ein anderes auf einem anderen Datenbank-Server übertragen wird.
Bei einer solchen Transaktion ist es wichtig, daß Aktualisierungen, die ein Konto belasten, erst festgeschrieben werden, nachdem die Aktualisierungen, die für die Verarbeitung der Gutschrift auf dem anderen Konto erforderlich sind, festgeschrieben wurden. Die Aktualisierung auf mehreren Systemen ist dann in Betracht zu ziehen, wenn die Daten für diese Konten auf zwei verschiedenen Datenbank-Servern verwaltet werden.
Die DB2-Produkte bieten eine umfassende Unterstützung für Aktualisierungen auf mehreren Systemen. Diese Unterstützung ist für Anwendungen verfügbar, die mit regulärem SQL entwickelt wurden, sowie für Anwendungen, die Produkte zur Transaktionsüberwachung (TP-Monitore) verwenden, die die X/Open XA-Schnittstellenspezifikation implementieren. TP-Monitore sind z. B. IBM TxSeries (CICS und Encina), IBM Message and Queuing Series, IBM Component Broker Series, IBM San Francisco Project sowie Microsoft Transaction Server (MTS), BEA Tuxedo und verschiedene andere. Je nachdem, ob für die Aktualisierung auf mehreren Systemen systemeigenes SQL oder ein TP-Monitor verwendet wird, variieren die Installationsanforderungen.
Sowohl die Verfahren, die für die Aktualisierung auf mehreren Systemen systemeigenes SQL verwenden, als auch die auf TP-Monitoren basierenden Programme müssen unter Angabe der Optionen CONNECT 2 SYNCPOINT TWOPHASE vorkompiliert werden. Beide Verfahren können über die SQL-Anweisung CONNECT angeben, welche Datenbank für die folgenden SQL-Anweisungen verwendet werden soll. Wenn kein TP-Monitor vorhanden ist, der DB2 mitteilt, daß er die Transaktion koordiniert (z. B., wenn DB2 die xa_open-Aufrufe des TP-Monitors zum Aufbau einer Datenbankverbindung empfängt), wird die Transaktion von der DB2-Software koordiniert.
Wenn Sie für die Aktualisierung auf mehreren Systemen einen TP-Monitor verwenden, muß von der Anwendung mit Hilfe der API des TP-Monitors, z. B. CICS SYNCPOINT, Encina Abort(), MTS SetAbort(), eine COMMIT- oder ROLLBACK-Operation angefordert werden.
Bei der Aktualisierung auf mehreren Systemen mit systemeigenem SQL müssen die normalen SQL-Anweisungen COMMIT und ROLLBACK verwendet werden.
Die Aktualisierung auf mehreren Systemen mit einem TP-Monitor kann eine Transaktion koordinieren, die sowohl auf DB2- als auch auf Nicht-DB2-Ressourcenmanager wie Oracle, Informix oder SQLServer zugreift. Die Aktualisierung auf mehreren Systemen mit systemeigenem SQL wird nur mit DB2-Servern verwendet.
Damit eine Aktualisierungstransaktion auf mehreren Systemen durchgeführt werden kann, müssen alle Datenbanken, die an einer verteilten Transaktion beteiligt sind, verteilte Arbeitseinheiten unterstützen. Zum Zeitpunkt der Erstellung dieses Handbuchs unterstützen folgende DB2-Server verteilte Arbeitseinheiten und können somit an verteilten Transaktionen beteiligt werden:
In einer verteilten Transaktion kann eine beliebige Zusammenstellung aus unterstützten Datenbank-Servern aktualisiert werden. So können von Ihrer Anwendung beispielsweise mit einer einzigen Transaktion verschiedene Tabellen in DB2 Universal Database unter Windows NT oder Windows 2000, eine Datenbank von DB2 für OS/390 und eine DB2/400-Datenbank aktualisiert werden.