Wenn Nachrichtenflusstransaktionen mit Aktualisierungen in
Oracle-Datenbanken unter der Steuerung eines WebSphere MQ-Warteschlangenmanagers global koordiniert werden sollen, müssen Sie die Brokerumgebung entsprechend konfigurieren.
Gehen Sie wie folgt vor, um die Brokerumgebung für die globale Koordination über einen
64-Bit-Warteschlangenmanager als Transaktionsmanager mit den DataDirect-Treibern zu konfigurieren:

Führen Sie unter Linux und UNIX den Befehl mqsimanagexalinks aus.
Unter Windows (64-Bit) müssen Sie für die 64-Bit-Version von WebSphere Message
Broker den Befehl mqsimanagexalinks ausführen und der Systemvariablen PATH das als ExitsDefaultPath angegebene Verzeichnis des Warteschlangenmanagers hinzufügen.
- Konfigurieren Sie den Warteschlangenmanager des Brokers anhand der XA-Ressourcenmanagerinformationen für jede Datenbank, die an der vom Warteschlangenmanager global koordinierten Transaktion beteiligt ist.

Unter Linux und
UNIX:
- Öffnen Sie die Datei qm.ini des Warteschlangenmanagers in einem Texteditor. Die Datei qm.ini befindet sich im Pfad
/var/mqm/qmgrs/WS-Manager-Name/qm.ini.
Dabei steht WS_Manager_Name für den Namen des Brokers, der dem Warteschlangenmanager zugeordnet ist.
- Fügen Sie am Ende der Datei qm.ini die folgende Zeilengruppe hinzu:

XAResourceManager:
Name=OracleXA
SwitchFile=UKoradtc24.so
XAOpenString=ORACLE_XA
+HostName=Hostname
+PortNumber=Portnummer
+ServiceName=Servicename
+ACC=P/Benutzer-ID/Kennwort
+sestm=100+threads=TRUE
+DataSource=Datenquellenname
+K=2+
XACloseString=
ThreadOfControl=THREAD
- Ersetzen Sie in der Zeile XAOpenString die folgenden Werte durch Werte,
die Ihrer Konfiguration entsprechen:
- Hostname steht für den Namen des TCP/IP-Hosts, auf dem sich der Listener der Oracle-Datenbank befindet. Wenn Sie Oracle Real Application Clusters mit mehreren Listenern für den angegebenen Servicenamen verwenden und der Oracle-Listener, der über die Werte in Hostname und Portnummer von XAOpenString angegeben ist, nicht verfügbar ist, werden auch die Oracle-Listener versucht, die Sie möglicherweise in der Liste AlternateServers Ihrer odbc.ini-Datei definiert haben.
- Portnummer steht für den TCP/IP-Port, an dem der Oracle-Datenbanklistener
empfangsbereit ist.
- Benutzer-ID muss mit dem Benutzernamen identisch sein, mit dem der Broker eine Verbindung zur Datenbank herstellt.
Es gibt zahlreiche Möglichkeiten, den vom Broker verwendeten Benutzernamen zu definieren. Achten Sie darauf, in dieser Datei den richtigen Namen anzugeben. Zur Ermittlung des Benutzernamens prüft der Broker die folgenden Bedingungen in der hier aufgeführten Reihenfolge:
- Bestimmter Benutzername und Kennwort für diesen Datenquellennamen, den Sie über den Befehl
mqsisetdbparms definiert haben.
- Standardbenutzername und -kennwort für alle Datenquellennamen, die Sie über den Befehl
mqsisetdbparms definiert haben.
- Standardbenutzername und -kennwort für alle Datenquellennamen, die Sie über den Parameter -u im Befehl mqsicreatebroker definiert haben.
Dieser Parameter gilt nur für Broker, die aus früheren Releases migriert wurden.
- Benutzername des Brokerservice, den Sie über den Parameter -i im Befehl
mqsicreatebroker definieren.
- Kennwort steht für das Kennwort, das dem Benutzernamen zugeordnet ist.
- Datenquellenname ist der ODBC-Datenquellenname für die Datenbank gemäß der Definition in Ihrer odbc.ini-Datei.
- Servicename ist der Wert, der in der Datei odbc.ini in der Zeilengruppe für Datenquellenname als Servicename festgelegt wurde.
- Übernehmen Sie die Standardwerte für alle anderen Zeilen in der Zeilengruppe. Beispiel:
- Bei globaler Koordination mit Oracle:
- Setzen Sie die Umgebungsvariable ODBCINI so, dass sie in der Umgebung, aus der der Warteschlangenmanager gestartet wird, sichtbar ist. Diese Variable muss auf die vom Broker verwendete Datei verweisen.
- Für den Parameter XAOpenString ist eine zusätzliche Eigenschaft CTO=Wert verfügbar. CTO ist der als Verbindungszeitlimit festgelegte Wert. Dieser Wert gibt an, wie viele Sekunden die Oracle-XA-Switchdatei auf eine Antwort der Oracle-Datenbank auf eine XA-Anforderung wartet. Durch Angabe dieses Zeitlimits können beispielsweise lange Verzögerungen vermieden werden, bis der Broker einen Failover zu einem alternativen
Oracle
Real Application Clusters-Knoten vornimmt, wenn die aktive Oracle-Instanz abrupt fehlschlägt und die Socketverbindungen dadurch blockiert sind. Es sollte ein Wert festgelegt werden, der größer ist als der im Parameter XAOpenString festgelegte Wert sestm für das Oracle-Sitzungszeitlimit. Falls diese Eigenschaft nicht verwendet wird oder auf Null gesetzt ist, gibt es kein Zeitlimit (Standardverhalten).
Bei Windows (32-Bit) und Windows (64-Bit)
- Öffnen Sie im Menü Start WebSphere MQ Explorer.
- Öffnen Sie das Dialogfenster mit den Eigenschaften des Warteschlangenmanagers und dann
XA-Ressourcenmanager.
- Geben Sie im Feld SwitchFile wie im folgenden Beispiel den Namen der Switch-Datei ein; dabei ist Installationsverzeichnis das Verzeichnis, in dem der Broker installiert ist:

- Fügen Sie im Feld XAOpenString folgende Zeichenfolge ein:
ORACLE_XA+
+HostName=Hostname
+PortNumber=Portnummer
+ServiceName=Servicename
+ACC=P/Benutzer-ID/Kennwort
+sestm=100+threads=TRUE
+DataSource=Datenquellenname
+K=2+
- Ersetzen Sie im Feld XAOpenString die Werte durch Werte,
die Ihrer Konfiguration entsprechen:
- Hostname steht für den Namen des TCP/IP-Hosts, auf dem sich der Listener der Oracle-Datenbank befindet. Wenn Sie Oracle Real Application Clusters mit mehreren Listenern für den angegebenen Servicenamen verwenden und der Oracle-Listener, der über die Werte in Hostname und Portnummer von XAOpenString angegeben ist, nicht verfügbar ist, werden auch die Oracle-Listener versucht, die Sie möglicherweise in der Liste AlternateServers Ihrer odbc.ini-Datei definiert haben.
- Portnummer steht für den TCP/IP-Port, an dem der Oracle-Datenbanklistener
empfangsbereit ist.
- Benutzer-ID muss mit dem Benutzernamen identisch sein, mit dem der Broker eine Verbindung zur Datenbank herstellt.
Es gibt zahlreiche Möglichkeiten, den vom Broker verwendeten Benutzernamen zu definieren. Achten Sie darauf, in dieser Datei den richtigen Namen anzugeben. Zur Ermittlung des Benutzernamens prüft der Broker die folgenden Bedingungen in der hier aufgeführten Reihenfolge:
- Bestimmter Benutzername und Kennwort für diesen Datenquellennamen, den Sie über den Befehl
mqsisetdbparms definiert haben.
- Standardbenutzername und -kennwort für alle Datenquellennamen, die Sie über den Befehl
mqsisetdbparms definiert haben.
- Standardbenutzername und -kennwort für alle Datenquellennamen, die Sie über den Parameter -u im Befehl mqsicreatebroker definiert haben.
Dieser Parameter gilt nur für Broker, die aus früheren Releases migriert wurden.
- Benutzername des Brokerservice, den Sie über den Parameter -i im Befehl
mqsicreatebroker definieren.
- Kennwort steht für das Kennwort, das dem Benutzernamen zugeordnet ist.
- Datenquellenname ist der ODBC-Datenquellenname für die Datenbank gemäß der Definition in Ihrer odbc.ini-Datei.
- Servicename ist der Wert, der in der ODBC-Definition für die Datenquelle Datenquellenname als Servicename festgelegt wurde.
Beispiel:
ORACLE_XA+
+HostName=diaz.hursley.ibm.com
+PortNumber=1521
+ServiceName=accounts_service
+ACC=P/wbrkuid/wbrkpw
+sestm=100+threads=TRUE
+DataSource=MYDB+K=2+
- Übernehmen Sie die Standardwerte für alle anderen Felder auf der Seite.
Wenn Oracle-Datenquellen unter AIX für die globale Koordination mittels eines Warteschlangenmanagers und Broker verwendet werden sollen, damit eine dynamische XA-Registrierung möglich ist, müssen Sie die folgende Variable setzen: DDTEK_XA_DYNAMIC_REGISTRATION=1

Stoppen Sie den Warteschlangenmanager, und starten Sie ihn
erneut, um die Änderungen anzuwenden, da 'qm.ini' schreibgeschützt
ist, solange der Warteschlangenmanager aktiv ist. Um den Warteschlangenmanager zu stoppen und danach neu zu starten, geben Sie die folgenden Befehle ein, wobei
Warteschlangenmanagername für den Namen des Warteschlangenmanagers steht:
endmqm Warteschlangenmanagername
strmqm Warteschlangenmanagername
Wenn der Warteschlangenmanager erneut startet, überprüfen Sie dessen Protokoll auf Warnungen, die mit dem Neustart in Zusammenhang stehen.
Die Protokolldateien befinden sich im Verzeichnis
'/var/mqm/qmgrs/Warteschlangenmanagername/errors', wobei
Warteschlangenmanagername für den Namen des Warteschlangenmanagers
steht, den Sie erneut gestartet haben.
Wenn der Warteschlangenmanager erfolgreich neu gestartet
wurde, werden die Änderungen angewandt, die Sie an 'qm.ini'
durchgeführt haben.
Stoppen Sie den Warteschlangenmanager, und starten Sie ihn
erneut, um die Änderungen anzuwenden. Um den Warteschlangenmanager zu stoppen und danach neu zu starten, geben Sie die folgenden Befehle ein, wobei
Warteschlangenmanagername für den Namen des Warteschlangenmanagers steht:
endmqm Warteschlangenmanagername
strmqm -si Warteschlangenmanagername
Wenn der Warteschlangenmanager erneut startet, überprüfen Sie dessen Protokoll auf Warnungen, die mit dem Neustart in Zusammenhang stehen.
Die Protokolldateien befinden sich im Verzeichnis
'/var/mqm/qmgrs/Warteschlangenmanagername/errors', wobei
Warteschlangenmanagername für den Namen des Warteschlangenmanagers
steht, den Sie erneut gestartet haben.
Wenn der Warteschlangenmanager erfolgreich neu gestartet
wurde, werden die Änderungen angewandt.
Oracle ist damit für die globale Koordination konfiguriert, bei der der WS-Managers des Brokers die Koordination von Transaktionen übernimmt.
Nächster Schritt: Sie können jetzt global koordinierte
Nachrichtenflüsse auf dem Broker implementieren.