Zusätzliche SQLEXEC-Richtlinien
Beachten Sie die folgenden SQLEXEC-Richtlinien:
-
Pro Eintrag
TABLEoderMAPkönnen bis zu 20 gespeicherte Prozeduren oder Abfragen ausgeführt werden. Sie werden in der Reihenfolge ausgeführt, die in der Parameteranweisung aufgeführt ist. -
Eine Datenbankanmeldung durch den Oracle GoldenGate-Benutzer muss vor der
SQLEXEC-Klausel stehen. Verwenden Sie die ParameterSOURCEDBundUSERIDALIASin der Extract-Parameterdatei oder die ParameterTARGETDBundUSERIDALIASin der Replicat-Parameterdatei, je nach Bedarf für den Datenbanktyp und die konfigurierte Authentifizierungsmethode. -
Der SQL-Code wird vom Oracle GoldenGate-Benutzer ausgeführt. Dieser Benutzer muss über die Berechtigung verfügen, Stored Procedures auszuführen und von RDBM bereitgestellte Prozeduren aufzurufen.
-
Datenbankvorgänge innerhalb einer Stored Procedure oder Abfrage werden im selben Kontext wie die ursprüngliche Transaktion festgeschrieben.
-
Verwenden Sie
SQLEXECnicht, um den Wert einer Primärschlüsselspalte zu aktualisieren. WennSQLEXECzum Aktualisieren des Wertes einer Schlüsselspalte verwendet wird, kann der Replicat-Prozess keinen nachfolgenden Aktualisierungs- oder Löschvorgang ausführen, da der ursprüngliche Schlüsselwert nicht verfügbar ist. Wenn ein Schlüsselwert geändert werden muss, können Sie den ursprünglichen Schlüsselwert einer anderen Spalte zuordnen und diese Spalte dann mit der OptionKEYCOLSdes ParametersTABLEoderMAPangeben. -
Für Db2 verwendet Oracle GoldenGate die ODBC-Funktion
SQLExecDirect, um eine SQL-Anweisung dynamisch auszuführen. Das bedeutet, dass der verbundene Datenbankserver die Anweisung dynamisch vorbereiten kann. ODBC bereitet die SQL-Anweisung jedes Mal vor, wenn sie ausgeführt wird (im angeforderten Intervall). In der Regel stellt dies kein Problem für Oracle GoldenGate-Benutzer dar. Weitere Informationen finden Sie in der IBM Db2-Dokumentation. -
Alle Objektnamen in einer
SQLEXEC-Anweisung müssen, je nach Datenbank, vollständig mit ihren zweiteiligen oder dreiteiligen Namen versehen sein. -
Alle Objekte, die von einer gespeicherten
SQLEXEC-Prozedur oder -Abfrage betroffen sind, müssen vor der Ausführung der SQL mit den richtigen Strukturen vorhanden sein. DDL für diese Objekte, die sich auf die Struktur auswirken (wieCREATEoderALTER), muss daher vor der Ausführung vonSQLEXECerfolgen. -
Alle Objekte, die von einer Standalone-Anweisung
SQLEXECbetroffen sind, müssen vorhanden sein, bevor die Oracle GoldenGate-Prozesse gestartet werden. Aus diesem Grund muss die DDL-Unterstützung für diese Objekte deaktiviert werden. Andernfalls können DDL-Vorgänge die Struktur ändern oder das Objekt löschen, bevor die Prozedur oder AbfrageSQLEXECdarauf ausgeführt wird.