Mit Konvertierungsarbeitsbereichen können Sie das Schema und die Objekte aus Ihrer Quelldatenbank in die SQL-Syntax konvertieren, die mit Ihrer Zieldatenbank kompatibel ist. Auf dieser Seite finden Sie eine Übersicht über Konvertierungsarbeitsbereiche von Database Migration Service:
In Objekte, die von der automatischen Code- und Schemakonvertierung unterstützt werden sind die Oracle-Objekte aufgeführt, die für die automatische Schemakonvertierung unterstützt werden.
Im Hilfeartikel Interaktiver SQL-Editor wird beschrieben, welche Objekte Sie direkt im Editor des Konvertierungsarbeitsbereichs ändern können.
Im Artikel Gemini-gestützte Konvertierungsfunktionen erfahren Sie, wie Sie generative KI einbinden können, um den Schemakonvertierungsprozess zu beschleunigen.
Im Abschnitt Conversion-Zuordnungsdateien finden Sie eine Übersicht über Anpassungsanweisungen, mit denen Sie die Regeln der automatischen Schemakonvertierung überschreiben können.
Legacy-Konvertierungsarbeitsbereiche beschreibt die Legacy-Arbeitsbereiche, die den interaktiven SQL-Editor nicht unterstützen.
Unabhängig davon, ob Sie die automatische Schemakonvertierung verwenden oder eine zusätzliche Conversion-Zuordnungsdatei erstellen, werden bestimmte Datentypen bei Oracle-Migrationen nicht unterstützt. Weitere Informationen finden Sie unter Bekannte Einschränkungen für Datentypen.
Automatische Code- und Schemakonvertierung
Wenn Sie einen Konvertierungsarbeitsbereich erstellen, führt der Datenbank-Migrationsdienst automatisch die erste Schemakonvertierung durch. Die automatische Schemakonvertierung unterstützt eine sehr spezifische Teilmenge der verfügbaren Oracle-Datenbankobjekte.
Die automatische Codekonvertierung unterstützt die folgenden Oracle-Datenbankobjekte:
Unterstützte Oracle-Schemaelemente
- Einschränkungen
- Indexe (nur Indexe, die im selben Schema wie die zugehörige Tabelle erstellt wurden)
- Materialisierte Ansichten
- Objekttypen (teilweise Unterstützung)
- Sequenzen
- Synonyme
- Tabellen
- Aufrufe
Unterstützte Oracle-Codeelemente
- Trigger (nur Tabellenebene)
- Pakete
- Funktionen
- Gespeicherte Prozeduren
Interaktiver SQL-Editor
Mit dem interaktiven SQL-Editor können Sie die konvertierte PostgreSQL-Syntax direkt im Database Migration Service ändern. Sie können damit Conversion-Probleme beheben oder das Schema an Ihre Anforderungen anpassen. Einige Objekte können im integrierten Editor nicht geändert werden.
Bearbeitbare Oracle-Objekte
Nachdem Sie den Quelldatenbankcode und das Schema konvertiert haben, können Sie mit dem interaktiven Editor das generierte SQL für bestimmte Objekttypen ändern. Die folgenden Oracle-Objekte werden vom Editor unterstützt:
- Tabellentrigger (Berechtigung erforderlich)
- Materialisierte Ansichten
- Pakete
- Funktionen, gespeicherte Prozeduren
- Synonyme
- Aufrufe
- Einschränkungen
- Indexe
- Sequenzen
Außerdem werden einige Objekte konvertiert, können aber nicht direkt im Database Migration Service bearbeitet werden. Wenn Sie solche Objekte ändern möchten, müssen Sie die Aktualisierungen direkt in der Zieldatenbank vornehmen, nachdem Sie das konvertierte Schema und den Code angewendet haben.
Objekte, die nicht bearbeitet werden können:
- Benutzerdefinierte Objekttypen
- Tabellen
- Schemas
Funktionen für unterstützte Conversions mit Gemini
Der Database Migration Service integriert Gemini für Google Cloud in Konvertierungsarbeitsbereiche, um den Konvertierungsprozess in zwei Bereichen zu beschleunigen und zu verbessern:
Mit dem Conversion Assistant können Sie Funktionen zur Erklärbarkeit von Code bereitstellen: eine Reihe spezieller Prompts, mit denen Sie die Conversion-Logik besser verstehen, Lösungen für Conversion-Probleme vorschlagen oder konvertierten Code optimieren können.
Mit Gemini-Vorschlägen zur Codekonvertierung können Sie die Behebung von Conversion-Problemen beschleunigen. Dabei lernt das Gemini-Modell, während Sie Conversion-Probleme beheben, und schlägt Änderungen an anderen fehlerhaften Objekten im Arbeitsbereich vor.
Weitere Informationen zur Gemini-gestützten Conversion finden Sie auf den folgenden Seiten:
Conversion-Zuordnungsdateien
Sie können die Conversion-Logik mit einer Conversion-Zuordnungsdatei anpassen. Die Conversion-Zuordnungsdatei ist eine Textdatei mit genauen Anweisungen (sogenannte Conversion-Anweisungen), wie Ihre Oracle-Objekte in PostgreSQL-Objekte umgewandelt werden sollen.
Unterstützte Conversion-Richtlinien
Der Database Migration Service unterstützt die folgenden Konvertierungsanweisungen für Konvertierungszuordnungsdateien:
EXPORT_SCHEMA
EXPORT_SCHEMA
ist eine obligatorische Anweisung für alle Conversion-Zuordnungsdateien. Diese Anweisung ist für den Database Migration Service erforderlich, damit Ihre Quellschemas in die richtigen Zielschemas konvertiert werden.
Ihre Conversion-Zuordnungsdateien müssen diese Zeile enthalten:
EXPORT_SCHEMA 1
SCHEMA
Database Migration Service muss erkennen können, welches Schema die Objekte enthält, die mit Ihren Konvertierungsrichtlinien geändert werden sollen.
Die SCHEMA
-Richtlinie führt zu den folgenden Anpassungen am Conversion-Pfad:
- Der Database Migration Service konvertiert nur dieses Schema. Wenn Sie andere Schemas in einem einzigen Conversion-Arbeitsbereich konvertieren möchten, müssen Sie mehrere Dateien mit unterschiedlichen Schemas hochladen.
- Alle anderen in Ihrer Datei enthaltenen Anpassungsanweisungen gelten nur für Objekte in diesem bestimmten Schema.
Verwenden Sie das folgende Format:
SCHEMA SCHEMA_NAME
Dabei ist SCHEMA_NAME der Name des Schemas in der Quelldatenbank.
- Wenn Sie diese Anweisung in die Conversion-Zuordnungsdatei aufnehmen, werden alle Anpassungen nur auf Objekte angewendet, die in diesem bestimmten Schema enthalten sind. Wenn Sie Objekte in anderen Schemas anpassen möchten, müssen Sie mehrere Conversion-Zuordnungsdateien erstellen und in den Conversion-Arbeitsbereich hochladen.
- Wenn Sie diese Direktive überspringen, müssen Sie explizite Schemanamen für Objekte angeben, die durch andere Conversion-Richtlinien geändert wurden.
Verwenden Sie beispielsweise anstelle von
SOURCE_TABLE_NAME
für die AnweisungREPLACE_TABLES
das Zeichen"SCHEMA_NAME.SOURCE_TABLE_NAME"
.
DATA_TYPE
Mit dieser Direktive können Sie jeden unterstützten Datentyp explizit zwischen der Oracle- und der PostgreSQL-Syntax abgleichen. Für diese Direktive wird eine Liste von Zuordnungen erwartet, die durch Kommas getrennt ist. Die gesamte Definition muss in einer einzigen Zeile angegeben werden. Sie können jedoch mehrere DATA_TYPE
-Anweisungen in Ihre Konfigurationsdatei aufnehmen. Verwenden Sie das folgende Format:
DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1 DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...
Dabei sind ORACLE_DATA_TYPE und PGSQL_DATA_TYPE Datentypen, die von den jeweiligen Oracle- und PostgreSQL-Versionen unterstützt werden, die Sie bei der Migration verwenden. Informationen zu unterstützten Versionen finden Sie unter Szenarioübersicht.
Beispiel:
DATA_TYPE REAL:double precision,SMALLINT:integer
Weitere Informationen zu Oracle- und PostgreSQL-Datentypen finden Sie unter:
- Oracle-Datentypen in der Oracle-Dokumentation
- PostgreSQL-Datentypen in der PostgreSQL-Dokumentation
MODIFY_TYPE
Mit der Direktive MODIFY_TYPE
können Sie festlegen, in welchen Datentyp der Datenbank-Migrationsdienst eine bestimmte Spalte in Ihrer Quelltabelle umwandelt.
Für diese Direktive wird eine Liste von Zuordnungen erwartet, die durch Kommas getrennt ist.
Die gesamte Definition muss in einer einzigen Zeile angegeben werden. Sie können jedoch mehrere MODIFY_TYPE
-Direktive in Ihre Konfigurationsdatei aufnehmen.
Verwenden Sie das folgende Format:
MODIFY_TYPE SOURCE_TABLE_NAME1:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE MODIFY_TYPE SOURCE_TABLE_NAME2:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE...
Wobei:
- SOURCE_TABLE_NAME ist der Name der Tabelle, die die Spalte enthält, für die Sie den Datentyp ändern möchten.
- COLUMN_NAME ist der Name der Spalte, für die Sie die Conversion-Zuordnung anpassen möchten.
- EXPECTED_END_RESULT_DATA_TYPE ist der PostgreSQL-Datentyp, der für die konvertierte Spalte verwendet werden soll.
Beispiel:
MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT
PG_INTEGER_TYPE
Standardmäßig wandelt der Database Migration Service die NUMBER(p,s)
-Typen in den PostgreSQL-DECIMAL(p,s)
-Typ um.
Sie können dieses Verhalten mit dem Direktiv PG_INTEGER_TYPE
ändern. Legen Sie den Wert auf 1
fest und erzwingen Sie, dass alle NUMBER
-Typen mit Genauigkeit und Skalierung (NUMBER(p,s)
) basierend auf der Anzahl der Ziffern der Genauigkeit in PostgreSQL-Typen vom Typ smallint
, integer
oder bigint
konvertiert werden.
Fügen Sie der Conversion-Zuordnungsdatei die folgende Einstellung hinzu:
PG_INTEGER_TYPE 1
PG_NUMERIC_TYPE
Legen Sie diese Direktive auf 1
fest, wenn Sie alle NUMBER
-Typen mit Genauigkeit und Skalierung (NUMBER(p,s)
) in PostgreSQL-real
- oder float
-Typen konvertieren möchten (basierend auf der Anzahl der Ziffern der Genauigkeit).
Wenn Sie diese Direktive auf 0
festlegen, bleiben die ursprünglichen Werte der NUMBER(p,s)
-Werte erhalten und der interne PostgreSQL-Datentyp wird verwendet.
Fügen Sie der Conversion-Zuordnungsdatei die folgende Einstellung hinzu:
PG_NUMERIC_TYPE 1
DEFAULT_NUMERIC
Die Standardumwandlung für NUMBER
s ohne Genauigkeit ändert sich, je nachdem, ob Sie auch die
PG_INTEGER_TYPE
-Richtlinie verwenden:
- Wenn Sie die Direktive
PG_INTEGER
verwenden, werdenNUMBER
-Werte ohne Genauigkeit inDECIMAL
-Werte umgewandelt. - Wenn Sie die
PG_INTEGER
-Anweisung nicht verwenden, werdenNUMBER
-Werte ohne Genauigkeit inBIGINT
-Werte umgewandelt.
Sie können dieses Verhalten ändern und mit der DEFAULT_NUMERIC
-Richtlinie angeben, welcher Datentyp für NUMBER
-Typen ohne angegebene Dezimalstellen verwendet werden soll.
Verwenden Sie das folgende Format:
DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE
Dabei steht POSTGRESQL_NUMERIC_DATA_TYPE für integer
, smallint
oder bigint
.
Beispiel:
DEFAULT_NUMERIC integer
REPLACE_COLS
Mit der Anweisung REPLACE_COLS
können Sie Spalten im konvertierten Schema umbenennen. Für diese Direktive wird eine Liste von Zuordnungen erwartet, die durch Kommas getrennt ist.
Verwenden Sie das folgende Format:
REPLACE_COLS SOURCE_TABLE_NAME1(SOURCE1_TABLE1_COLUMN_NAME1:DESTINATION_TABLE1_COLUMN_NAME1,SOURCE_TABLE1_COLUMN_NAME2:DESTINATION_TABLE1_COLUMN_NAME2),SOURCE_TABLE_NAME2(SOURCE_TABLE2_COLUMN_NAME1:DESTINATION_TABLE2_COLUMN_NAME1,SOURCE_TABLE2_COLUMN_NAME2:DESTINATION_TABLE2_COLUMN_NAME2)...
Wobei:
- SOURCE_TABLE_NAME ist der Name der Tabelle, die die Spalte enthält, deren Namen Sie ändern möchten.
- SOURCE_COLUMN_NAME ist der Name der Spalte in der Quelle, deren Namen Sie ändern möchten.
- DESTINATION_COLUMN_NAME ist der neue Name der Spalte, die Sie im konvertierten Schema verwenden möchten.
Beispiel:
REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
REPLACE_TABLES
Mit der Direktive REPLACE_TABLES
können Sie Tabellen umbenennen oder in ein neues Schema verschieben. Für diese Direktive wird eine Liste von Zuordnungen erwartet, die durch Leerzeichen getrennt sind. Maximieren Sie die folgenden Abschnitte, um weitere Informationen zur Syntax für die einzelnen Anwendungsfälle zu erhalten.
Tabellen umbenennen
Verwenden Sie das folgende Format, um Tabellen in Ihrem konvertierten Schema umzubenennen:
REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2
Wobei:
- SOURCE_TABLE_NAME ist der Name der Quelltabelle, die Sie im konvertierten Schema umbenennen möchten.
- DESTINATION_TABLE_NAME ist der neue Name der Tabelle, die Sie im konvertierten Schema verwenden möchten.
Beispiel:
REPLACE_TABLES "events:login_events" "users:platform_users"
Tabellen zwischen Schemas verschieben
Mit dieser Direktive können Sie Tabellen zwischen Schemas verschieben, indem Sie dem neuen Tabellennamen das Schemapräfix hinzufügen. Dieser Mechanismus kann unabhängig davon verwendet werden, wie Sie die SCHEMA-Anweisung für die gesamte Conversion-Datei verwenden. Beispiel:
REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
Aliasse zum Anpassen von Datentypen
Wenn Sie mithilfe von Konvertierungsanweisungen ändern, wie Database Migration Service verschiedene Datentypen konvertiert (z. B. mit den Anweisungen
DATA_TYPE
,
MODIFY_TYPE
oder
PG_NUMERIC_TYPE
), können Sie Aliasse anstelle der Quell-SQL-Datentypen verwenden.
Maximieren Sie den folgenden Abschnitt, um eine Liste der Datentypaliasse zu sehen, die vom Database Migration Service unterstützt werden.
Datentypaliasse
Alias | In PostgreSQL-Typ konvertiert |
---|---|
bigint , int8 |
BIGINT |
bool , boolean |
BOOLEAN |
bytea |
BYTEA |
char , character |
CHAR |
character varying , varchar |
VARCHAR |
date |
DATE |
decimal , numeric |
DECIMAL |
double precision , float8 |
DOUBLE PRECISION |
real , float4 |
REAL |
int , integer , int4 |
INTEGER |
int2 |
SMALLINT |
interval |
INTERVAL |
json |
JSON |
smallint |
SMALLINT |
text |
TEXT |
time |
TIME |
timestamp |
TIMESTAMP |
timestamptz |
TIMESTAMPTZ |
timetz |
TIMETZ |
uuid |
UUID |
XML |
XML |
Beispieldatei für die Conversion-Zuordnung
In der folgenden Beispieldatei für die Conversion-Zuordnung werden alle unterstützten Schemakonvertierungsanweisungen verwendet:
EXPORT_SCHEMA 1 SCHEMA root PG_NUMERIC_TYPE 0 PG_INTEGER_TYPE 1 DEFAULT_NUMERIC integer DATA_TYPE NUMBER(4\,0):integer MODIFY_TYPE events:dates_and_times:TIMESTAMP REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname) REPLACE_TABLES events:login_events users:platform_users
Die Verwendung dieser Datei hat folgende Auswirkungen:
EXPORT_SCHEMA 1
ist eine erforderliche Anweisung.SCHEMA root
führt zu den folgenden Anpassungen am Conversion-Vorgang:- Der Database Migration Service führt die Konvertierung nur für Entitäten im
root
-Schema durch. Andere Schemas werden nicht konvertiert. - Alle anderen Anpassungsanweisungen in dieser Datei gelten nur für Spalten und Datentypen, die im
root
-Schema definiert sind.
- Der Database Migration Service führt die Konvertierung nur für Entitäten im
PG_INTEGER_TYPE 1
sorgt dafür, dass der Database Migration Service alle numerischen Oracle-Datentypen in Tabellen imroot
-Schema in PostgreSQL-spezifische Typen anstelle von ANSI-portablen numerischen Typen konvertiert.- Bei
DEFAULT_NUMERIC
wandelt der Database Migration ServiceNUMBER
-Werte ohne angegebene Genauigkeit in den PostgreSQL-TypINTEGER
um. Dies gilt nur fürNUMBER
-Werte in Tabellen imroot
-Schema. DATA_TYPE NUMBER(4\,0):integer
führt dazu, dass der Database Migration Service bestimmteNUMBER(4,0)
-Werte in PostgreSQL-INTEGER
konvertiert.- Durch die
MODIFY_TYPE
-Anweisung konvertiert der Database Migration Service die Daten in der Spaltedates_and_times
in der Quelltabelleevents
unabhängig vom tatsächlichen Format der Quellspalte in den PostgreSQL-TypDATETIME
. - Mit
REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
werden die folgenden Spalten im konvertierten Schema vom Database Migration Service umbenannt:- Die Spalte
dates_and_times
in der Quelltabelleevents
wird in derselben Tabelle im konvertierten Schema inevent_dates
umbenannt. - Die Spalte
pseudonym
in der Quelltabelleusers
wird in derselben Tabelle im konvertierten Schema innickname
umbenannt.
events
undusers
imroot
-Schema angewendet. - Die Spalte
REPLACE_TABLES events:login_events users:platform_users
benennt die folgenden Tabellen im konvertierten Schema um:- Die Tabelle
events
wird inlogin_events
umbenannt. - Die Tabelle
users
wird inplatform_users
umbenannt.
events
undusers
imroot
-Schema angewendet.- Die Tabelle
Legacy-Konvertierungsarbeitsbereiche
Legacy-Konvertierungsarbeitsbereiche sind eine ältere, eingeschränktere Art von Konvertierungsarbeitsbereichen. Legacy-Conversion-Arbeitsbereiche unterstützen keine Gemini-optimierten Conversion-Funktionen und den interaktiven SQL-Editor nicht. Sie können sie nur verwenden, um Ihr Quellschema mit dem Ora2Pg-Migrationstool zu konvertieren.
Wir empfehlen, für Migrationen keine alten Conversion-Arbeitsbereiche zu verwenden. Wenn für Ihr Szenario die Verwendung alter Konvertierungsarbeitsbereiche erforderlich ist, lesen Sie den Hilfeartikel Alte Konvertierungsarbeitsbereiche verwenden.
Nächste Schritte
- Informationen zur Verwendung des interaktiven Konvertierungsarbeitsbereichs finden Sie unter Interaktiven Konvertierungsarbeitsbereich erstellen.