DB2 Universal Database - Systemverwaltung


Wiederherstellen von unbestätigten Transaktionen auf dem Host

Wenn Ihre Anwendung während einer Transaktion auf einen Host- oder AS/400-Datenbank-Server zugegriffen hat, gibt es einige Unterschiede darin, wie unbestätigte Transaktionen wiederhergestellt werden.

DB2 Connect wird für den Zugriff auf Host- oder AS/400-Datenbank-Server verwendet. Die Schritte zur Wiederherstellung unterscheiden sich, wenn bei DB2 Connect der DB2-Synchronisationspunktmanager konfiguriert ist.

Wiederherstellung, wenn bei DB2 Connect der DB2-Synchronisationspunktmanager konfiguriert ist

Die Wiederherstellung unbestätigter Transaktionen auf Host- oder AS/400-Servern wird normalerweise automatisch vom Transaktionsmanager (TM) und dem DB2-Synchronisationspunktmanager (SPM) durchgeführt. Eine unbestätigte Transaktion auf einem Host- oder AS/400-Server belegt keine Ressourcen auf der lokalen DB2-Station, belegt jedoch Ressourcen auf dem Host- oder AS/400-Server, solange die Transaktion auf dem betreffenden Server unbestätigt bleibt. Wenn der Host- oder AS/400-Server bestimmt, daß eine heuristische Maßnahme durchzuführen ist, kann der Administrator mit dem lokalen DB2-Datenbankadministrator (z. B. per Telefon) in Kontakt treten, um festzustellen, ob die Transaktion auf dem Host- oder AS/400-Server festzuschreiben (COMMIT) oder rückgängig zu machen (ROLLBACK) ist. Wenn dies geschieht, kann der Befehl LIST DRDA INDOUBT TRANSACTIONS verwendet werden, um den Status der Transaktion auf dem lokalen DB2 Connect-Exemplar zu ermitteln. In den meisten Fällen können Sie in einer SNA-Übertragungsumgebung folgendermaßen vorgehen:

  1. Stellen Sie die Verbindung zum SPM wie im folgenden gezeigt her:
    db2 => connect to db2spm
     
     Datenbankverbindungsinformationen
     
     Datenbankprodukt                 = SPM0500
     SQL-Berechtigungs-ID             = CRUS
     Aliasname der lokalen Datenbank  = DB2SPM
    
  2. Führen Sie den Befehl LIST DRDA INDOUBT TRANSACTIONS aus, um die dem SPM bekannten unbestätigten Transaktionen anzuzeigen. Das folgende Beispiel weist eine, dem SPM bekannte unbestätigte Transaktion aus. Der Datenbankname (db_name) ist der lokale Aliasname für den Host- oder AS/400-Server. Die Partner-LU (partner_lu) ist der vollständig qualifizierte LU-Name des Host- oder AS/400-Servers. Dies stellt die beste Identifikation des Host- oder AS/400-Servers zur Verfügung und sollte vom Anrufer vom Standort des Host- oder AS/400-Servers eingeholt werden. Die Angabe luwid ist eine eindeutige Kennung für eine Transaktion und steht allen Host- und AS/400-Servern zur Verfügung. Wenn die fragliche Transaktion angezeigt wird, kann anhand des Feldes uow_status das Ergebnis der Transaktion festgestellt werden, wenn der Wert C (COMMIT) oder R (ROLLBACK) ist. Wenn Sie den Befehl LIST DRDA INDOUBT TRANSACTIONS mit dem Parameter WITH PROMPTING absetzen, können Sie die Transaktion interaktiv festschreiben, rückgängig machen oder ignorieren. Weitere Informationen finden Sie im Handbuch Command Reference.
    db2 => list drda indoubt transactions
     Unbestätigte DRDA-Transaktionen:
     1.db_name: DBAS3    db_alias: DBAS3    role: AR
       uow_status: C  partner_status: I  partner_lu: USIBMSY.SY12DQA
     corr_tok: USIBMST.STB3327L
          luwid: USIBMST.STB3327.305DFDA5DC00.0001
          xid: 53514C2000000017 00000000544D4442 0000000000305DFD A63055E962000000
               00035F
    
  3. Wenn eine unbestätigte Transaktion für die partner_lu und für die luwid nicht angezeigt wird bzw. wenn der Befehl LIST DRDA INDOUBT TRANSACTIONS folgende Ausgabe ergibt:
    db2 => list drda indoubt transactions
    SQL1251W  Keine Daten für manuelle Abfrage zurückgegeben.
    
    dann wurde die Transaktion rückgängig gemacht.

    Es gibt jedoch noch eine weitere Situation, die zwar unwahrscheinlich ist, aber dennoch auftreten kann. Wenn eine unbestätigte Transaktion mit einer ordnungsgemäßen luwid für die partner_lu angezeigt wird, aber der uow_status den Wert "I" aufweist, kann der SPM nicht entscheiden, ob die Transaktion festzuschreiben oder mit ROLLBACK rückgängig zu machen ist. In diesem Fall sollten Sie den Parameter WITH PROMPTING verwenden, um die Transaktion auf der DB2 Connect-Workstation festzuschreiben oder rückgängig zu machen. Erlauben Sie dann DB2 Connect die Resynchronisation mit dem Host- oder AS/400-Server auf der Basis der heuristischen Entscheidung.

Wiederherstellung, wenn der DB2-Synchronisationspunktmanager bei DB2 Connect nicht verwendet wird

Verwenden Sie die Informationen in diesem Abschnitt, wenn die TCP/IP-Konnektivität verwendet wird, um DB2 für OS/390 in einer Aktualisierung auf mehreren Systemen von DB2 Connect Personal Edition oder DB2 Connect Enterprise Edition zu aktualisieren und der DB2-Synchronisationspunktmanager nicht verwendet wird. Die Wiederherstellung unbestätigter Transaktionen ist in diesem Fall anders als bei Verwendung des DB2-Synchronisationspunktmanagers. Wenn eine unbestätigte Transaktion in dieser Umgebung auftritt, wird auf dem Client, auf dem Datenbank-Server und/oder in der Transaktionsmanagerdatenbank (TMD), je nachdem, wo der Fehler festgestellt wurde, ein Alert-Eintrag generiert. Der Alert-Eintrag wird in die Datei db2alert.log geschrieben. Weitere Informationen zu Alerts finden Sie im Handbuch Troubleshooting Guide.

Die Resynchronisation aller unbestätigten Transaktionen erfolgt automatisch, sobald die TMD und alle beteiligten Datenbanken sowie ihre Verbindungen wieder verfügbar sind. Es ist besser, eine automatische Resynchronisation zuzulassen, als manuell eine Entscheidung beim Datenbank-Server herbeizuführen. Wenn dies jedoch erforderlich ist, gehen Sie wie im folgenden beschrieben vor.
Anmerkung:Da der DB2-Synchronisationspunktmanager nicht verwendet wird, können Sie den Befehl LIST DRDA INDOUBT TRANSACTIONS nicht verwenden.

  1. Setzen Sie auf dem OS/390-Host den Befehl DISPLAY THREAD TYPE(INDOUBT) ab.

    Stellen Sie anhand dieser Liste die Transaktion fest, die Sie manuell zu beenden möchten. Einzelheiten zum Befehl DISPLAY finden Sie im Handbuch DB2 for OS/390 Command Reference. Die angezeigte LUWID kann derselben luwid in der Transaktionsmanagerdatenbank zugeordnet werden.

  2. Setzen Sie (abhängig vom gewünschten Zweck) den Befehl RECOVER THREAD(<LUWID>) ACTION(ABORT|COMMIT) ab.

    Einzelheiten zum Befehl RECOVER finden Sie im Handbuch DB2 for OS/390 Command Reference.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]