Dieser Abschnitt enthält Informationen über:
- Der Umgang von Datastream mit Daten, die aus einer Oracle-Quelldatenbank abgerufen werden
- Die von Datastream unterstützten Versionen der Oracle-Datenbank
- Eine Übersicht über das Einrichten einer Oracle-Quelldatenbank, damit Daten daraus an ein Ziel gestreamt werden können
- Bekannte Einschränkungen bei Verwendung der Oracle-Datenbank als Quelle
Verhalten
Datastream unterstützt zwei Methoden zum Extrahieren von Änderungen an den Daten aus Online-Redo-Logdateien: den Oracle-Binärlog-Reader (Vorabversion) und Oracle LogMiner.
Bei der Methode „Binärlog-Reader“ (Vorabversion) wird folgendes Verhalten beobachtet:
Wenn beim Extrahieren der Änderungen aus den Online-Logdateien eine Leseverzögerung auftritt, extrahiert Datastream die Änderungen aus archivierten Logdateien.
Datastream repliziert nur Änderungen, für die ein Commit durchgeführt wurde, in das Ziel. Transaktionen, für die kein Commit durchgeführt wurde oder die zurückgesetzt wurden, werden nicht repliziert.
Der Binärlog-Reader unterstützt die Replikation von
VARCHAR2-Spalten von Oracle, die länger als 4.000 Zeichen sind.
Datastream unterstützt auch das Oracle LogMiner-Feature, um Änderungen an den Daten aufzuzeigen. Die Methode hat folgendes Verhalten:
- Es können alle Schemas oder bestimmte Schemas einer bestimmten Datenbank sowie alle Tabellen der Schemas oder bestimmte Tabellen ausgewählt werden.
- Alle Verlaufsdaten werden repliziert.
- Alle Änderungen an der Datenbearbeitungssprache (DML) wie Einfügungen, Aktualisierungen und Löschungen aus den angegebenen Datenbanken und Tabellen werden repliziert.
- Datastream repliziert sowohl Änderungen, für die ein Commit durchgeführt wurde, also auch (in einigen Fällen) Änderungen, für die kein Commit durchgeführt wurde. Datastream liest Änderungen, für die kein Commit durchgeführt wurde. Bei einem Rollback enthalten die Datastream-Ausgabedatensätze auch den umgekehrten Vorgang. Wenn es beispielsweise einen Rollback-Vorgang
INSERTgibt, enthalten die Ausgabedatensätze auch einen entsprechendenDELETE-Vorgang. In diesem Fall wird das Ereignis alsDELETE-Ereignis angezeigt, das nur dieROWIDenthält.
Backfill auf Basis von ROWID
ROWID ist in Oracle eine Pseudospalte, in der eindeutige IDs für Zeilen in einer Tabelle gespeichert werden. Datastream verwendet die ROWID-Werte für seine Backfill-Vorgänge. Aus diesem Grund empfehlen wir, keine Aktionen auszuführen, die die ROWID-Werte in Ihrer Oracle-Quelldatenbank ändern könnten, bis der Backfill-Vorgang abgeschlossen ist.
Die folgenden Aktionen können die ROWID-Werte ändern:
Physische Verschiebung von Zeilen:
- Export- und Importvorgänge: Wenn Sie eine Tabelle exportieren und dann wieder importieren, kann sich der physische Speicherort der Zeilen ändern, was zu neuen
ROWID-Werten führt. - Befehl
ALTER TABLE (...) MOVE: Wenn Sie eine Tabelle in einen anderen Tablespace verschieben, kann sich der physische Speicher ändern und zuROWID-Änderungen führen. - Befehl
ALTER TABLE (...) SHRINK SPACE: Mit diesem Befehl wird die Tabelle komprimiert, wodurch möglicherweise Zeilen verschoben und ihreROWID-Werte beeinflusst werden. - Partitionierungsvorgänge: Wenn Sie Partitionen aufteilen, zusammenführen oder verschieben, kann sich die physische Platzierung von Zeilen und ihre
ROWID-Werte ändern.
- Export- und Importvorgänge: Wenn Sie eine Tabelle exportieren und dann wieder importieren, kann sich der physische Speicherort der Zeilen ändern, was zu neuen
Flashback-Vorgänge:
- Befehl
FLASHBACK TABLE: Wenn Sie eine Tabelle in einen früheren Zustand zurückversetzen, werden Zeilen gelöscht und neu eingefügt, wodurch neueROWID-Werte erstellt werden. FLASHBACK_TRANSACTION_QUERY: Ähnlich wieFLASHBACK TABLE. Wenn Sie einen Rollback für eine Transaktion durchführen, können sich dieROWID-Werte ändern, wenn Zeilen in der Transaktion gelöscht oder aktualisiert wurden.
- Befehl
Fehlerbehebung beim Backfill von partitionierten Tabellen in Oracle 11.2.0.4
Wenn der Backfill für eine partitionierte Tabelle in Oracle 11.2.0.4 mit einem unerwarteten Abruffehler (Index außerhalb des zulässigen Bereichs) fehlschlägt, liegt das an einem Oracle-Metadatenfehler, bei dem Abfragen an ALL_OBJECTS keine Unterpartitionen zurückgeben.
- Problemumgehung: Heben Sie die Berechtigung
SELECT ON DBA_EXTENTSfür den Datastream-Nutzer vorübergehend auf (z. B.REVOKE SELECT ON sys.dba_extents FROM USER_NAME;). Dadurch wird Datastream gezwungen, einen indexbasierten Backfill zu verwenden, wodurch das Metadatenproblem umgangen wird.
Standby-Datenbanken
Wenn Sie eine Oracle Active Data Guard-Standby-Datenbank als Quelle verwenden, liest Datastream die archivierten Redo-Logs. Damit
Datastream nur Redo-Logs verarbeitet, die erfolgreich
auf die Standby-Datenbank angewendet wurden, müssen Sie Standard-Oracle-Ansichten wie
V$ARCHIVED_LOG und GV$ARCHIVED_LOG, filtern, damit nur Datensätze mit dem
APPLIED = 'YES' Filter berücksichtigt werden.
Sie können dies erreichen, indem Sie benutzerdefinierte Ansichten erstellen. Achten Sie darauf, dass Sie Ihrem Datastream-Nutzer den entsprechenden Zugriff auf diese Ansichten gewähren. Beispiel:
CREATE OR REPLACE VIEW USER_NAME.local_v$archived_log AS
SELECT * FROM sys.v_$ARCHIVED_LOG
WHERE RESETLOGS_CHANGE# = (SELECT resetlogs_change# FROM v$database)
AND APPLIED = 'YES';
CREATE OR REPLACE VIEW USER_NAME.local_gv$archived_log AS
SELECT * FROM sys.gv_$ARCHIVED_LOG
WHERE RESETLOGS_CHANGE# = (SELECT resetlogs_change# FROM v$database)
AND APPLIED = 'YES';
CREATE SYNONYM USER_NAME.v$archived_log FOR USER_NAME.local_v$archived_log;
CREATE SYNONYM USER_NAME.gv$archived_log FOR USER_NAME.local_gv$archived_log;
Die Verwendung des Filters APPLIED = 'YES' hat Auswirkungen auf die Datenaktualität.
Datastream wartet, bis der verwaltete Wiederherstellungsprozess (Managed Recovery Process, MRP) der Standby-Datenbank die Logs anwendet und die Spalte APPLIED in YES ändert, bevor Änderungen extrahiert werden. Wenn sich der MRP-Prozess verzögert oder pausiert wird, z. B. wenn Sie den Standby-Anwendungsprozess anhalten, wirkt sich dies direkt auf die Aktualität der replizierten Daten aus. Datastream wechselt in eine Wiederholungsschleife und verzögert die Verarbeitung, bis die neu angewendeten archivierten Logs verfügbar sind.
Diese Konfiguration ist besonders wichtig, wenn Sie Tabellen replizieren, die Spalten mit großen Objekten (Large Object, LOB) enthalten. Bei UPDATE-Vorgängen sind die detaillierten Werte von LOB-Spalten nicht in den Redo-Logs enthalten. Daher muss Datastream die Datenbank abfragen, um die zugehörige Zeile abzurufen. Wenn Datastream ein nicht angewendetes Redo-Log verarbeitet und versucht, den LOB-Wert aus der Standby-Datenbank abzurufen, wird möglicherweise ein falscher, veralteter Wert abgerufen. Wenn Sie die Logs filtern, um sicherzustellen, dass sie zuerst vollständig angewendet werden, ruft Datastream die richtigen Daten ab.
Versionen
Datastream unterstützt die folgenden Versionen der Oracle-Datenbank:
- Oracle 11g, Version 11.2.0.4 (wird nur mit der LogMiner-CDC-Methode unterstützt)
- Oracle 12c, Version 12.1.0.2
- Oracle 12c, Version 12.2.0.1
- Oracle 18c
- Oracle 19c
- Oracle 21c
Datastream unterstützt die folgenden Arten von Oracle-Datenbanken:
- Selbst gehostet, lokal oder bei einem beliebigen Cloud-Anbieter
- Amazon RDS for Oracle
- Oracle Cloud
- Oracle Exadata
- Oracle RAC
- Oracle Active Data Guard-Standby-Datenbank
Einrichtung
Damit Sie eine Oracle-Quelldatenbank so einrichten können, dass Daten aus ihr in ein Ziel gestreamt werden können, muss die Datenbank so konfiguriert werden, dass sie Zugriff gewährt, eine Logging-Funktion einrichtet und eine Aufbewahrungsrichtlinie definiert.
Unter Oracle-Quelldatenbank konfigurieren wird erläutert, wie Sie diese Datenbank so konfigurieren, dass Datastream Daten aus einem Datenbankziel abrufen kann.
Best Practices
In diesem Abschnitt werden empfohlene Best Practices für die Konfiguration Ihrer Oracle-Quelle zur Verwendung mit Datastream beschrieben.
Groß-/Kleinschreibung für den Binärlog-Reader
Wenn Sie eine Oracle-Quelle mit der CDC-Methode „Binärlog-Reader“ konfigurieren und Verzeichnisnamen für Redo- und Archivierungslogs angeben, müssen Sie beachten, dass bei den Namen die Groß-/Kleinschreibung berücksichtigt wird. Die Verzeichnisnamen, die Sie im Datastream-Verbindungsprofil angeben, müssen genau mit der Groß-/Kleinschreibung der Verzeichnisnamen in Ihrer Oracle-Datenbank übereinstimmen.
CDC-Parallelität
Um die Replikationsverzögerung zu minimieren, muss Datastream Redo-Logs so schnell verarbeiten können, wie sie von Ihrer Oracle-Quelle erstellt werden. Bei Verwendung der CDC-Methode „Binärlog-Reader“ erfolgt die Parallelität von Datastream auf der Ebene der Redo-Logdatei: Jede Aufgabe, die durch maxConcurrentCdcTasks definiert wird, verarbeitet jeweils eine Datei.
Wir empfehlen die folgende Methode:
- Parallelität in Datastream optimieren: Ermitteln Sie die durchschnittliche Anzahl der
Redo-Log-Switches während der Hauptgeschäftszeiten und konfigurieren Sie den
maxConcurrentCdcTasksParameter entsprechend. Weitere Informationen finden Sie unter Maximale Anzahl von CDC-Aufgaben. - Oracle-Log-Switching konfigurieren:Konfigurieren Sie Oracle so, dass Logs häufig gewechselt werden, z. B. alle 10 bis 20 Minuten. Dadurch wird ein stetiger Stream kleinerer Arbeitseinheiten erstellt, sodass die parallelen Aufgaben von Datastream effektiv parallel ausgeführt werden können.
Wir empfehlen, die Einstellungen so zu optimieren, dass in Datastream genügend parallele Aufgaben vorhanden sind, um die häufige Erstellung kleinerer Redo-Logs aus Oracle zu verarbeiten. Weitere Informationen finden Sie unter Steuerelemente für die Stream-Parallelität.
Bekannte Einschränkungen
Bekannte Einschränkungen bei Verwendung der Oracle-Datenbank als Quelle:
- Streams sind auf 10.000 Tabellen beschränkt. Wenn ein Stream mehr als 10.000 Tabellen enthält, können Fehler auftreten.
- Datastream unterstützt die mehrmandantenfähige Architektur von Oracle (CDB/PDB). Sie können jedoch nur eine einzelne Pluggable Database in einem Stream replizieren.
- Oracle Autonomous Database wird nicht unterstützt.
- Für Tabellen ohne Primärschlüssel verwendet Datastream die
ROWIDder Zeile, um auf Nutzerseite einen Zusammenführungsvorgang auszuführen. Beachten Sie, dass dieROWIDmöglicherweise nicht eindeutig ist. Wenn Sie beispielsweise eine Zeile mit dem Oracle-Dienstprogramm „Export/Import“ löschen und neu einfügen, kann sich dieROWIDder Zeile ändern. Wenn Sie eine Zeile löschen, kann Oracle ihreROWIDeiner neuen Zeile zuweisen, die später eingefügt wird. - Indexbasierte Tabellen (Index-organized Tables, IOTs) werden nicht unterstützt.
- Temporäre Tabellen werden nicht unterstützt.
- Die folgenden Oracle-Datentypen werden nicht unterstützt und nicht repliziert. Spalten dieser Typen werden im Ziel als
NULL-Werte repliziert:ANYDATA,ANYDATASET,ANYTYPEVARRAY(Oracle-Arrays)BFILE,BFILENAMEINTERVAL DAY TO SECOND,INTERVAL YEAR TO MONTHLONG,LONG RAWUROWIDUDT- Media- und räumliche Typen:
ORDAUDIO,ORDDATASOURCE,ORDDICOM,ORDDOC,ORDIMAGE,ORDVIDEO,SDO_GEOMETRYund alle anderenMDSYS.SDO_*-Typen.
Wenn Sie Spalten mit großen Objektdatentypen wie
XMLTYPE, binären großen Objekten (BLOB), Zeichen-LOBs (CLOB) und nationalen Zeichen-LOBs (NCLOB) streamen möchten, müssen Sie das FlagstreamLargeObjectsin Ihre Stream-Konfiguration aufnehmen. Wenn Sie das Flag nicht einfügen, streamt Datastream solche Spalten nicht und sie werden im Ziel durchNULL-Werte ersetzt. Weitere Informationen finden Sie unter Streaming großer Objekte für Oracle-Quellen aktivieren. Beim Streaming dieser Datentypen muss Datastream die Quelldatenbank abfragen, um fehlende LOB-Werte zu einem bestimmten Zeitpunkt abzurufen (in einem aktiven Suchvorgang, der als Ergänzung bezeichnet wird). Dies tritt in den folgenden Szenarien auf:- Wenn unveränderte LOB-Nutzlasten während eines
UPDATE-Vorgangs aus dem Redo-Log entfernt werden - Bei allen DML-Vorgängen mit binären XML-Typen
- Bei allen geparsten DML-Vorgängen in einer Tabelle mit LOBs, wenn der Stream die LogMiner-Methode verwendet
Da Datastream diese Spalten durch Abfragen der Datenbank streamt, werden Zwischenänderungen in Szenarien mit schnellen, aufeinanderfolgenden Aktualisierungen oder einem schnellen Löschen nach dem Einfügen möglicherweise nicht erfasst. Beachten Sie, dass
DELETE-Vorgänge keine Ergänzung auslösen. Diese Einschränkung ist besonders relevant, wenn Sie den Schreibmodus „Nur anhängen“ verwenden, bei dem alle Zwischenänderungen erfasst werden müssen.- Wenn unveränderte LOB-Nutzlasten während eines
Bei Oracle 11g werden Tabellen mit Spalten vom Datentyp
ANYDATAoderUDTnicht unterstützt und die gesamte Tabelle wird nicht repliziert.Oracle Label Security (OLS) wird nicht repliziert.
Datastream ruft regelmäßig das neueste Schema aus der Quelle ab, während Ereignisse verarbeitet werden. Wenn sich ein Schema ändert, werden möglicherweise einige Ereignisse aus dem neuen Schema gelesen, während das alte Schema noch angewendet wird. In diesem Fall erkennt Datastream die Schemaänderung, löst einen Schemaabruf aus und verarbeitet die fehlgeschlagenen Ereignisse noch einmal.
Nicht alle Änderungen am Quellschema können automatisch erkannt werden. Dies kann zu Datenbeschädigungen führen. Die folgenden Schemaänderungen können zu Datenbeschädigungen oder Fehlern bei der nachgelagerten Verarbeitung der Ereignisse führen:
- Spalten entfernen
- Spalten in der Mitte einer Tabelle einfügen
- Datentyp einer Spalte ändern
- Spalten neu sortieren
- Tabellen löschen (relevant, wenn dieselbe Tabelle anschließend mit neuen Daten neu erstellt wird)
- Tabellen kürzen
Datastream unterstützt keine Replikation von Ansichten.
Datastream unterstützt materialisierte Ansichten. Für neue Ansichten, die während der Ausführung des Streams erstellt werden, erfolgt jedoch kein automatischer Backfill.
Bei Verwendung der Oracle LogMiner-Methode werden
SAVEPOINTAnweisungen nicht unterstützt und können bei einem Rollback zu Datenabweichungen führen.Bei Verwendung der Methode „Binärlog-Reader“ werden dynamisch partitionierte Tabellen nicht unterstützt.
Bei Verwendung der Oracle LogMiner-Methode unterstützt Datastream keine Replikation von Tabellen und Spalten, deren Namen länger als 30 Zeichen sind.
Datastream unterstützt die folgenden Zeichensatzcodierungen für Oracle-Datenbanken:
AL16UTF16AL32UTF8IN8ISCIIIW8ISO8859P8JA16SJISJA16SJISTILDEKO16MSWIN949US7ASCIIUTF8WE8ISO8859P1WE8ISO8859P9WE8ISO8859P15WE8MSWIN1252ZHT16BIG5
Datastream unterstützt keine Replikation von Datumsangaben mit dem Wert 0. Solche Datumsangaben werden durch
NULL-Werte ersetzt.Datastream unterstützt keine direkte Verbindung zu Datenbanken mit dem Feature „Single Client Access Name“ (SCAN) in Oracle Real Application Cluster (RAC)-Umgebungen. Informationen zu möglichen Lösungen finden Sie unter Verhalten und Einschränkungen von Oracle-Quellen.
Wenn die Quelle eine Oracle Active Data Guard-Standby-Datenbank ist, unterstützt Datastream nur die Verschlüsselung auf Tablespace-Ebene und nicht die Verschlüsselung auf Spaltenebene.
Zusätzliche Einschränkungen bei Verwendung des Binärlog-Readers
Die leistungsstarke Methode „Binärlog-Reader“ wird nur für Oracle 12c und höher unterstützt. Für Oracle 11g und frühere Versionen müssen Sie LogMiner verwenden.
Der Binärlog-Reader unterstützt die folgenden Funktionen nicht:
- Transparente Datenbankverschlüsselung (Transparent Database Encryption, TDE)
- Hybride spaltenbasierte Komprimierung
- Sichere Dateien
- ASM wird für Amazon RDS-Quellen nicht unterstützt.
- Die CDC-Methode „Binärlog-Reader“ unterstützt Oracle 11g und frühere Versionen nicht.
Nächste Schritte
- Oracle-Quelle zur Verwendung mit Datastream konfigurieren