Interaktionen zwischen Abrufe aus einer Tabelle und DDL

Oracle GoldenGate unterstützt einige Datentypen, indem die geänderte Zeile aus dem Redo-Stream identifiziert und dann die zugrunde liegende Tabelle abgefragt wird, um die geänderten Spalten abzurufen. Beispiel: Teilweise Aktualisierungen von LOBs werden unterstützt, indem die geänderte Zeile und die LOB-Spalte aus dem Redo Log identifiziert und dann der LOB-Spaltenwert für die Zeile aus der Basistabelle abgefragt wird. Eine ähnliche Technik wird verwendet, um UDT zu unterstützen.

Hinweis: Für Extract ist nur ein Abruf für UDT erforderlich, wenn nicht native Objektunterstützung verwendet wird.

Eine solche Fetch-basierte Unterstützung wird implementiert, indem eine Flashback-Abfrage basierend auf der SCN (System Change Number) an die Datenbank ausgegeben wird, an der die Transaktion festgeschrieben wurde. Die Flashback Query-Funktion weist bestimmte Einschränkungen auf. Bestimmte DDL-Vorgänge fungieren als Barrieren, sodass Flashback-Abfragen zum Abrufen von Daten vor diesen DDLs nicht erfolgreich sind. Beispiele für solche DDL sind ALTER TABLE MODIFY COLUMN und ALTER TABLE DROP COLUMN.

In Fällen, in denen eine Extract Capture Lag-Verzögerung auftritt, kann eine dazwischenliegende DDL dazu führen, dass Abrufanforderungen für Daten vor der DDL nicht erfolgreich verlaufen. In solchen Fällen fällt Extract zurück und ruft den aktuellen Snapshot der Daten für die geänderte Spalte ab. Es gibt mehrere Einschränkungen für diesen Ansatz: Zuerst könnte die DDL die Spalte geändert haben, die Extract abrufen muss (Beispiel: Die zwischenzeitliche DDL hat dem erfassten UDT ein neues Attribut hinzugefügt). Zweitens hätte die DDL eine der Spalten ändern können, die Extract als logische Zeilen-ID verwendet. Drittens hätte die Tabelle umbenannt werden können, bevor Extract die Daten abrufen konnte.

Gehen Sie beim Ändern von Spalten wie folgt vor, um Inkonsistenzen beim Abrufen zu vermeiden.

  1. Alle DMLs in der Tabelle unterbrechen.

  2. Warten Sie, bis Extract die Erfassung aller verbleibenden Redo-Daten abgeschlossen hat, und warten Sie, bis Replicat die Verarbeitung der erfassten Daten aus dem Trail beendet hat. Um zu bestimmen, ob Replicat beendet ist, geben Sie den folgenden Befehl aus, bis eine Meldung angezeigt wird, dass keine weiteren Daten verarbeitet werden müssen.

    INFO REPLICAT *group*
  3. Führen Sie die DDL auf der Quelle aus.

  4. DML-Quellvorgänge wiederaufnehmen.