Details zur Unterstützung von Objekten und Vorgängen in Oracle DDL
Erfahren Sie mehr über die Oracle-Objekte und -Vorgänge, die Oracle GoldenGate für die Erfassung und Replikation von DDL-Vorgängen unterstützt.
Unterstützte Objekte und Vorgänge in Oracle DDL
Die Unterstützung für die DDL-Erfassung ist in den Logmining-Server der Datenbank integriert. Sie müssen die Kompatibilität der Datenbankparameter auf 11.2.0.4.0 oder höher festlegen. Extract unterstützt DDL mit kennwortbasierter Spaltenverschlüsselung, wie:
-
CREATE TABLE t1 (a number, b varchar2(32) ENCRYPT IDENTIFIED BY my_password); -
ALTER TABLE t1 ADD COLUMN c varchar2(64) ENCRYPT IDENTIFIED BY my_password;
Die folgenden zusätzlichen Anweisungen gelten für Extract in Bezug auf die DDL-Unterstützung.
-
Alle Oracle GoldenGate-Topologiekonfigurationen werden für die Oracle DDL-Replikation unterstützt.
-
Die aktiv-aktive (bidirektionale) Replikation von Oracle DDL wird zwischen zwei (und nur zwei) Datenbanken unterstützt, die identische Metadaten enthalten.
-
Oracle GoldenGate unterstützt DDL für die folgenden Objekte:
-
Cluster
-
Directorys
-
Funktionen
-
Indizes
-
Pakete
-
Prozedur
-
Tabellen
-
Tablespaces
-
Rollen
-
Belegnummern
-
Synonyme
-
Trigger
-
Typen
-
Ansichten
-
Materialized Views
-
Benutzer
-
Nicht sichtbare Spalten
-
-
Die Datenbankreplikation von Oracle DDL mit Oracle Edition-Based Redefinition (EBR) wird für Extract für die folgenden Oracle AI Database-Objekte unterstützt:
-
Funktionen
-
Bibliothek
-
Packages (Spezifikation und Body)
-
Prozedur
-
Synonyme
-
Typen (Spezifikation und Körper)
-
Ansichten
-
-
Ab Oracle GoldenGate 21c werden DDLs mit einer Größe von mehr als 4 MB Replikationsunterstützung bereitgestellt.
-
Ab Oracle GoldenGate 23ai werden SQL-Domains unterstützt.
-
Oracle GoldenGate kann Tabellen mit 4000 Spalten verwalten, wenn die Zeilengröße kleiner als 4 MB ist.
-
Oracle GoldenGate unterstützt GTT-(Global Temporary Tables-)DDL-Vorgänge, die für Extract sichtbar sind, damit sie repliziert werden können. Sie müssen den Parameter
DDLOPTIONSfestlegen, um diesen Vorgang zu aktivieren, da er nicht standardmäßig festgelegt ist. -
Oracle GoldenGate unterstützt Dictionary zur Verwendung mit
NOUSERIDundTRANLOGOPTIONS GETCTASDML. Das bedeutet, dass Extract Objektmetadaten aus dem Dictionary LogMiner empfängt, ohne die Dictionary-Objekte abzufragen. Oracle GoldenGate verwendet das Dictionary automatisch, wenn der Kompatibilitätsparameter der Quelldatenbank größer oder gleich 11.2.0.4 ist.Wenn Dictionary und Trailformat in Oracle GoldenGate Release 12.2.x verwendet werden, muss Extract den Logminer-Patch auf die Mining-Datenbank anwenden, wenn das Oracle Database-Release vor 12.1.0.2 liegt.
-
Oracle GoldenGate unterstützt die Replikation unsichtbarer Spalten in Extract. Trailformat Release 12.2 ist erforderlich. Replicat muss den Parameter
MAPINVISIBLECOLUMNSangeben oder explizit unsichtbaren Spalten in der KlauselCOLMAPdes ParametersMAPzuordnen.Wenn
SOURCEDEFSoderTARGETDEFSverwendet wird, muss das Metadatenformat einer Definitionsdatei für Oracle-Tabellen mit dem Trailformat kompatibel sein. Das Metadatenformat 12.2 ist mit dem Trailformat 12.2 kompatibel, und das Metadatenformat vor 12.2 ist mit dem Trailformat vor 12.2 kompatibel. Um das Metadatenformat einer Definitionsdatei anzugeben, verwenden Sie die OptionFORMAT RELEASEdes ParametersDEFSFILE, wenn die Definitionsdatei inDEFGENgeneriert wird. -
DDL-Anweisungen zum Erstellen eines Namespace-Kontexts (
CREATE CONTEXT) werden von Extract erfasst und von Replicat angewendet. -
Im Pumpenmodus extrahieren unterstützt die folgenden DDL-Optionen:
-
DDL INCLUDE ALL -
DDL EXCLUDE ALL -
DDL EXCLUDE OBJNAME
Die Optionen
SOURCECATALOGundALLCATALOGvonDDL EXCLUDEwerden ebenfalls unterstützt.Wenn kein DDL-Parameter angegeben ist, werden alle DDLs in einen Trail geschrieben. Wenn
DDL EXCLUDE OBJNAMEangegeben ist und der Objekteigentümer nicht mit einer Ausschlussregel übereinstimmt, wird es in den Trail geschrieben. -
-
Ab Oracle-Datenbank 21c ist die folgende DDL verfügbar, um das Blockieren von DML-/DDL-Änderungen zu unterstützen, die nicht von Oracle GoldenGate repliziert werden:
ALTER DATABASE [ENABLE | DISABLE] goldengate blocking mode;Wenn der Oracle GoldenGate-Blockierungsmodus aktiviert ist, verlaufen DMLs, die
support_mode NONEin Tabellen verwenden und nicht unterstützte Oracle PL/SQL-Anweisungen ausführen, mit dem folgenden Fehler nicht erfolgreich:ORA-26981: "operation was unsupported during Oracle GoldenGate blocking mode"Bei der Oracle-Datenbank 21c führen die folgenden Features dazu, dass eine Tabelle
support_mode NONEin Oracle GoldenGate enthält:-
BFILEals Attribut der ADT-Spalte oder der eingegebenen Tabelle -
Tisch ohne Skalare
-
OLAP AW$-Tabelle
-
In Shards unterteilte Queue-Tabelle
-
Sortierte Hashclustertabelle
-
Primärschlüssel-Constraint für ADT-Attribut in relationaler Tabelle
-
Constraint für Primärschlüssel/eindeutigen Schlüssel für lange
raw/varchar(über 4000 Byte) -
Die Spalte
V$DATABASE,Goldengate_Blocking_Mode, kann abgefragt werden, um den aktuellen Blockierungsmodusstatus zu bestimmen.
-
-
Für den automatischen DDL-Erfassungsmodus:
-
Sie ist nur für
DDL INCLUDE MAPPEDrelevant, da Extract DDLs basierend auf den ParameternTABLEundTABLEEXCLUDEerfasst. -
Nur tabellenbezogene DDLs können automatisch erfasst werden.
-
DDLs zur Aktivierung der automatischen Erfassung auf Tabellenebene:
CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLKEYS;
oder
<pre class="copy"><code>CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLOW NOVALIDATE KEYS;</code></pre>Siehe How to Capture Supplemental Logging for Oracle GoldenGate in der Dokumentation Oracle AI Database Utilities.
-
-
Die folgenden Vorgänge werden für partitionbezogene DDLs und Partitionswartungsvorgänge unterstützt
- Partition löschen:
Wenn eine Partition mit demselben Namen neu erstellt wird, erhält sie eine neue Objektnummer. Die internen Caches werden gelöscht, um den Speicherplatzverbrauch zu minimieren, wenn eine DDL zur Löschung einer Partition verarbeitet wird.
- Partition abschneiden:
Partitionsname und Objektnummer bleiben gleich. Die Version des Basistabellenobjekts bleibt gleich.
- Partition umbenennen:
Die Partitionsobjektnummer bleibt unverändert, erhält jedoch einen neuen Namen. Die Objektversion der Basistabelle wird zurückgenommen. Im Speichernamen-Cache wird beim Anzeigen dieser DDL invalidiert und bei der nächsten DML erneut aufgefüllt. Der Cache, der speichert, ob eine bestimmte Partitionsobjektnummer interessant ist oder nicht, muss ebenfalls neu bewertet werden, da der neue Partitionsname möglicherweise von gefiltert zu nicht gefiltert wechselt oder umgekehrt.
- Exchange-Partition:
Tauscht Daten in einer Partition mit denen in einer Tabelle aus oder umgekehrt. Die obj# der ausgetauschten Partition ändert sich nicht. Dataobj# ändert sich, wird aber nicht von Extract verwendet. Die Partition selbst gehört immer noch zu derselben Tabelle.
- Zusammenführungspartition:
Führt eine oder mehrere Partitionen in einer neuen Partition zusammen. Die DDL erstellt die neue Partition und löscht die Partitionen, aus denen sie zusammengeführt wurde. Im Speicher sollten Caches gelöscht werden, um Speicherplatz zu sparen, und der Benutzer sollte die richtigen Filterregeln für die neu erstellte Partition sicherstellen.
- Partition teilen:
Die Partition, die aufgeteilt wird, behält den ursprünglichen Namen und die Objektnummer bei, und es wird eine neue Partition für die geteilten Daten erstellt. Der Benutzer muss sicherstellen, dass die Partitionsfilterregeln für die neu erstellte Partition korrekt sind.
- Partition koaleszieren:
Reduziert die Anzahl von Partitionen in einer Hash-partitionierten Tabelle. Die spezifische Partition, die defragmentiert wird, ist von der Datenbank ausgewählt und wird gelöscht, nachdem ihr Inhalt neu verteilt wurde. Die restlichen Partitionen behalten denselben Namen und dieselbe Objektnummer bei. Die internen Caches sollten gelöscht werden, um den Speicherplatzverbrauch zu minimieren.
- Partition ändern:
Ändert Standard- und reale Attribute von Partitionen, abgesehen vom Hinzufügen oder Löschen von Werten für Listenpartitionen. Alle Änderungen lassen den Partitionsnamen und die Objektnummer intakt.
- Partition verschieben:
Partitionsdaten werden in einen neuen Tablespace verschoben. Partitionsname und -nummer bleiben gleich.
- Redef-Tabelle:
dbms_redefinitionkann zur Partitionierung einer Tabelle mithilfe einer Zwischentabelle verwendet werden. Die Partitionen werden in der Zwischentabelle und nach dem Vorgangfinish_redeferstellt, die Tabellen tauschen Namen aus. Die in der Zwischentabelle erstellten Partitionen behalten ihre Namen und Objektnummern bei, wenn die Tabellen ausgetauscht werden. Der Extract-Filtercache muss nachfinish_redefneu bewertet werden, da die Partitionen jetzt zur Basistabelle gehören. Der Benutzer muss die richtigen Filterregeln sicherstellen.- Erneute Partition:
Beim Neudefinieren einer Tabelle folgen die Partitionen von der ursprünglichen Tabelle zur temporären Tabelle. Beispiel: Die ursprüngliche Tabelle enthält Partitionen, die im Tablespace
USERgespeichert sind, und die Zwischentabelle wird ohne Partitionen erstellt, und die Tabelle lebt im TablespaceNEW. In diesem Fall bleibt die Partition nach dem Vorgangfinish_redefim TablespaceUSERbestehen, wenn die Tabellen ausgetauscht werden. Mit der Redef-Partition kann eine Partition in den TablespaceNEWder Zwischentabelle verschoben werden. Der Name und die Objektnummer der Partition werden beibehalten.- Vom System generierte Partitionsnamen:
Wenn Partitionen automatisch für Hash-Partitionen und Vorgänge wie Split-Partitionen erstellt werden, hat der Partitionsname das Format
SYS_P sequence value. Entsprechend haben Unterpartitionen das FormatSYS_SUBP sequence value. Es wird empfohlen, die Partition vor dem Umbenennen mit Ausnahme von DML so umzubenennen, dass sie den Filterregeln entspricht.
Nicht unterstützte Objekte und Vorgänge in Oracle DDL
Im Folgenden finden Sie eine Liste der nicht unterstützten Objekte und Vorgänge in Oracle DDL.
Ausgeschlossene Objekte
Die folgenden Namen oder Namenspräfixe werden als von Oracle reserviert betrachtet und müssen von der Oracle GoldenGate-DDL-Konfiguration ausgeschlossen werden. Oracle GoldenGate ignoriert Objekte, die diese Namen enthalten.
Ausgeschlossene Schemas
"ANONYMOUS", // HTTP access to XDB
"APPQOSSYS", // QOS system user
"AUDSYS", // audit super user
"BI", // Business Intelligence
"CTXSYS", // Text
"DBSNMP", // SNMP agent for OEM
"DIP", // Directory Integration Platform
"DMSYS", // Data Mining
"DVF", // Database Vault
"DVSYS", // Database Vault
"EXDSYS", // External ODCI System User
"EXFSYS", // Expression Filter
"GSMADMIN_INTERNAL", // Global Service Manager
"GSMCATUSER", // Global Service Manager
"GSMUSER", // Global Service Manager
"LBACSYS", // Label Security
"MDSYS", // Spatial
"MGMT_VIEW", // OEM Database Control
"MDDATA",
"MTSSYS", // MS Transaction Server
"ODM", // Data Mining
"ODM_MTR", // Data Mining Repository
"OJVMSYS", // Java Policy SRO Schema
"OLAPSYS", // OLAP catalogs
"ORACLE_OCM", // Oracle Configuration Manager User
"ORDDATA", // Intermedia
"ORDPLUGINS", // Intermedia
"ORDSYS", // Intermedia
"OUTLN", // Outlines (Plan Stability)
"SI_INFORMTN_SCHEMA", // SQL/MM Still Image
"SPATIAL_CSW_ADMIN", // Spatial Catalog Services for Web
"SPATIAL_CSW_ADMIN_USR",
"SPATIAL_WFS_ADMIN", // Spatial Web Feature Service
"SPATIAL_WFS_ADMIN_USR",
"SYS",
"SYSBACKUP",
"SYSDG",
"SYSKM",
"SYSMAN", // Adminstrator OEM
"SYSTEM",
"TSMSYS", // Transparent Session Migration
"WKPROXY", // Ultrasearch
"WKSYS", // Ultrasearch
"WK_TEST",
"WMSYS", // Workspace Manager
"XDB", // XML DB
"XS$NULL",
"XTISYS", // Time Index
Spezielle Schemas:
"AURORA$JIS$UTILITY$", // JSERV
"AURORA$ORB$UNAUTHENTICATED", // JSERV
"DSSYS", // Dynamic Services Secured Web Service
"OSE$HTTP$ADMIN", // JSERV
"PERFSTAT", // STATSPACK
"REPADMIN",
"TRACESVR" // Trace server for OEM
Ausgeschlossene Tabellen (der Platzhalter * gibt ein Schema oder ein beliebiges Zeichen an):
"*.AQ$*", // advanced queues
"*.DR$*$*", // oracle text
"*.M*_*$$", // Spatial index
"*.MLOG$*", // materialized views
"*.OGGQT$*",
"*.OGG$*", // AQ OGG queue table
"*.ET$*", // Data Pump external tables
"*.RUPD$*", // materialized views
"*.SYS_C*", // constraints
"*.MDR*_*$", // Spatial Sequence and Table
"*.SYS_IMPORT_TABLE*",
"*.SYS_EXPORT_TABLE*",
"*.CMP*$*", // space management, rdbms >= 12.1
"*.DBMS_TABCOMP_TEMP_*", // space management, rdbms < 12.1
"*.MDXT_*$*" // Spatial extended statistics tables
Andere nicht unterstützte DDL
Oracle GoldenGate unterstützt Folgendes nicht:
-
DDL für Nested Tables.
-
DDL für Identitätsspalten.
-
ALTER DATABASEundALTER SYSTEM(diese werden nicht als DDL betrachtet) Mit dem Dictionary können SieALTER DATABASE DEFAULT EDITIONundALTER PLUGGABLE DATABASE DEFAULT EDITIONreplizieren. Alle anderenALTER [PLUGABLE] DATABASE-Befehle werden ignoriert. -
DDL in einer Standbydatenbank.
-
Datenbanklink-DDL.
-
DDL, die Tabellen mit der
FLASHBACK ARCHIVE-Klausel und DDL erstellt, ändert oder löscht das Flashback Data Archive selbst. DML für Tabellen mitFLASHBACK ARCHIVEwird unterstützt. -
Einige DDL generieren systemgenerierte Objektnamen. Die Namen von systemgenerierten Objekten sind möglicherweise nicht immer zwischen zwei verschiedenen Datenbanken identisch. DDL-Vorgänge für Objekte mit systemgenerierten Namen sollten daher nur ausgeführt werden, wenn der Name auf dem Ziel identisch ist.