dmremoveclosedtxn -Abgeschlossene Transaktion entfernen
Wenn CDC das Commit oder den Abbruch einer Transaktion verpasst, kann die Transaktion in den Transaktionswarteschlangen des Protokollparsers verbleiben und die Neustartposition für alle Lesezeichen zurückhalten, die von diesem Parser erstellt werden. Jede Subskription, die diesen Parser verwendet, findet die Neustartposition für seine Lesezeichen, die älter als erforderlich ist. Wenn nach dem Schließen der Transaktion genügend Zeit vergeht, können Sie die Protokolldateien entfernen, die die Operationen in dieser Transaktion abdecken.
Wenn die Protokollleseeinheit die Protokolle ab dieser Lesezeichenneustartposition lesen muss, weil die Transaktionswarteschlangen nicht verwendet werden können, schlägt der Versuch der Protokollleseeinheit, die Protokollsätze zu lesen, fehl, wenn die Protokolldateien nicht mehr vorhanden sind. Der Parser für gemeinsam genutztes Scraping prüft einmal pro Stunde auf Transaktionen mit langer Laufzeit. Standardmäßig ist eine Transaktion mit langer Laufzeit eine Transaktion, die sich seit mehr als zwei Stunden in den Transaktionswarteschlangen befindet. Wenn eine Transaktion mit langer Laufzeit erkannt wird, gibt CDC das Warnungsereignis 2952aus. Wenn CDC das Ereignis 2952ausgibt, müssen Sie feststellen, ob eine oder mehrere Transaktionen, auf die das Ereignis verweist, noch geöffnet sind. Das Ereignis enthält die Transaktions-ID und die aktuelle Position der ersten Operation der ältesten Transaktion mit langer Laufzeit.
Das CDC-Traceprotokoll enthält eine Tracezeile, die mit "LONG RUNNING
TRANSACTIONS DETECTED" beginnt und die Transaktions-ID und die Protokollposition der ersten Operation für jede Transaktion mit langer Laufzeit angibt. Anschließend müssen Sie mit ihrem Datenbankadministrator arbeiten, um festzustellen, ob eine oder mehrere Transaktionen noch offen sind. Wenn eine Transaktion noch offen ist, müssen Sie entscheiden, was Sie dagegen tun sollen. Sie können warten oder die Verbindung, die der Transaktion zugeordnet ist, und den Eigner dieser Verbindung angeben. Dann müssen Sie entscheiden, ob Sie diese Verbindung beenden wollen (wodurch die offene Transaktion implizit rückgängig gemacht wird) oder ob die Eigneranwendung die Transaktion festschreiben oder rückgängig machen soll. Wenn die Transaktion nicht geöffnet ist, müssen Sie warten, bis CDC sich im Head of Log (HOL) befindet, d. h. alle abgearbeitet sind. Wenn CDC latent ist, müssen Sie die HOL-Position zu diesem Zeitpunkt notieren und warten, bis CDC nach diesem Punkt im Protokoll repliziert wurde. Anschließend müssen Sie prüfen, ob CDC weiterhin das Ereignis 2952 für diese Transaktion ausgibt.
Syntax
dmremoveclosedtxn [-I ] -p /current position/]
Parameter
- -I / Instanzname /
- Name der CDC-Instanz. Dieser Parameter ist optional.
- [-p/aktuelle Position/]
- Dieser Parameter ist erforderlich. Aktuelle Position gibt an, welche Transaktion geschlossen ist und entfernt werden muss. CDC entfernt die Transaktion, deren erste Operationsprotokollposition /current
position/ ist, aus allen persistenten Transaktionswarteschlangen des Protokollparsers. Sie sollten /current position/ aus der Ereignisnachricht 2952 oder aus der
"LONG RUNNING TRANSACTIONS DETECTED"-Tracenachricht abrufen.
Das Dienstprogramm gibt einen Hinweis auf Erfolg oder Fehler sowie eine Liste mit Tabellennamen für die Tabellen zurück, die von der Transaktion geändert wurden.
Wenn Sie nicht sicher sind, ob die Transaktion abgebrochen wird, sollten Sie alle Tabellenzuordnungen für die Tabellen, die als Teil der Transaktion markiert wurden, aktualisieren. Es können mehrere Subskriptionen mit Tabellenzuordnungen für die Tabellen in der Transaktion vorhanden sein. Anschließend können Sie alle Subskriptionen neu starten. Nach einer Wartezeit können Sie überprüfen, ob alle Neustartpositionen für Subskriptionslesezeichen erweitert wurden.
Vorgehensweise
- Stoppen Sie alle regulären Subskriptionen.
- LÖSCHEN SIE DEN STAGING-SPEICHER NICHT UND STOPPEN SIE DEN INSTANZABBRUCH NICHT.
- Führen Sie dmremoveclosedtxnaus.
- LÖSCHEN SIE DEN STAGING-SPEICHER NICHT UND STOPPEN SIE DEN INSTANZABBRUCH NICHT.
- Starten Sie die Spiegelung für alle Subskribenten erneut und lassen Sie zu, dass sie so lange ausgeführt wird, dass das Subskriptionslesezeichen in der Zieltabelle TS_BOOKMARK aktualisiert wird. Sie können dies überprüfen, indem Sie dmrshowbookmark ausführen und bestätigen, dass die Neustartposition erweitert wurde.