Workflow der Transaktionsreplikation für Oracle-Verleger

Die Transaktionsreplikation für Oracle-Verleger basiert auf der Veröffentlichungsarchitektur der Microsoft SQL Server-Transaktionsreplikation. Das Nachverfolgen von Änderungen auf dem Verleger und die Übermittlung dieser Änderungen an den Verteiler unterscheidet sich erheblich von der Standardtransaktionsreplikation. Trotz der Unterschiede werden Transaktionen, die in der Oracle-Datenbank auftreten, auf dem Abonnenten in konsistenten Transaktionsgruppen angewendet. Tabellen, die untereinander Fremdschlüsselverweise enthalten, behalten ihre Datenbeziehungen bei der Übermittlung von Änderungen bei (Fremdschlüssel werden nicht auf den Abonnenten kopiert).

HinweisHinweis

Die Nachverfolgung großer Objekte (LOB, Large OBjects) unterscheidet sich von der anderer Datentypen. Weitere Informationen finden Sie unter den Überlegungen zu großen Objekten im Thema Überlegungen zum Entwurf und Einschränkungen für Oracle-Verleger.

Der folgende Workflow verdeutlicht die wichtigsten Schritte bei der Nachverfolgung und Übermittlung von Änderungen vom Oracle-Verleger.

Nachverfolgen von Änderungen

  1. Ein Benutzer oder eine Anwendung führt Einfügungen, Updates oder Löschungen an einer oder mehreren für die Replikation veröffentlichten Oracel-Tabellen aus.

  2. Von der Replikation wird für jede veröffentlichte Oracle-Tabelle ein Trigger auf Zeilenebene installiert. Dieser Trigger wird bei jeder geänderten Zeile ausgelöst und speichert Informationen zur Änderung in der Artikelprotokolltabelle, die der Tabelle zugeordnet ist.

  3. Beim Auslösen des Triggers auf Zeilenebene wird eine Zahl aus der HREPL_seq-Sequenz abgerufen und der Protokolltabellenzeile zugewiesen, mit der die DML-Operation beschrieben wird. Dadurch wird sichergestellt, dass die Replikation Änderungsbefehle in der richtigen Reihenfolge auf dem Abonnenten anwendet.

  4. Im Falle eines Primärschlüsselupdates wird ein für die Tabelle installierter Trigger auf Anweisungsebene ebenfalls ausgelöst und ermöglicht, dass mehrere Primärschlüsselupdates in derselben Anweisung miteinander verknüpft werden. Der Anweisungsbezeichner wird aus der HREPL-Stmt-Sequenz abgerufen. Das dient der ordnungsgemäßen Verarbeitung der Primärschlüsselupdates auf dem Abonnenten.

  5. Für jede in die veröffentlichte Oracle-Tabelle eingefügte oder aus der Tabelle gelöschte Zeile wird eine Zeile in die zugeordnete Artikelprotokolltabelle eingefügt. Für jede in der Oracle-Tabelle aktualisierte Tabelle wird eine Zeile (nach dem Bild) oder zwei Zeilen (vor und nach dem Bild) in die Protokolltabelle eingefügt, je nachdem, ob die Replikation Informationen zum vorherigen Status der Zeile benötigt.

Übermitteln von Änderungen an den Verleger

  1. Der Protokolllese-Agent identifiziert die Gruppe von transaktionskonsistenten Änderungen aus dem Artikelprotokoll, die noch nicht bereits einem Abrufintervall zugeordnet sind, und speichert die Zeilen-IDs der Protokolltabelleneinträge vorübergehend in der HREPL_Poll-Tabelle. Der aus der HREPL_Pollid-Sequenz abgerufene Bezeichner wird dazu verwendet, die einzelnen Änderungseinträge als Mitglied einer transaktionskonsistenten Gruppe zu markieren und um eine Verarbeitungsreihenfolge für die Gruppe in Bezug auf andere Gruppen bereitzustellen.

  2. Bei der Verarbeitung von Änderungen für eine veröffentlichte Tabelle werden Zeilen aus der Protokolltabelle abgerufen; anhand der aktuellen Abruf-ID aus HREPL_Pollid werden die zu verarbeitenden Zeilen identifiziert.

  3. Der Batch für die Änderungen aus der Protokolltabelle wird als einzelne Transaktion in der Verteilungsdatenbank ausgeführt und in den Tabellen MSrepl_commands und MSrepl_transactions gespeichert.

Die Änderungen werden dann aus der Verteilungsdatenbank gelesen und vom Verteilungs-Agent auf die gleiche Weise wie bei der Standardtransaktionsreplikation an die Abonnenten übermittelt.