Konvertierungsarbeitsbereiche

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:

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 Anweisung REPLACE_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:

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 NUMBERs ohne Genauigkeit ändert sich, je nachdem, ob Sie auch die PG_INTEGER_TYPE-Richtlinie verwenden:

  • Wenn Sie die Direktive PG_INTEGER verwenden, werden NUMBER-Werte ohne Genauigkeit in DECIMAL-Werte umgewandelt.
  • Wenn Sie die PG_INTEGER-Anweisung nicht verwenden, werden NUMBER-Werte ohne Genauigkeit in BIGINT-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.
  • PG_INTEGER_TYPE 1 sorgt dafür, dass der Database Migration Service alle numerischen Oracle-Datentypen in Tabellen im root-Schema in PostgreSQL-spezifische Typen anstelle von ANSI-portablen numerischen Typen konvertiert.
  • Bei DEFAULT_NUMERIC wandelt der Database Migration Service NUMBER-Werte ohne angegebene Genauigkeit in den PostgreSQL-Typ INTEGER um. Dies gilt nur für NUMBER-Werte in Tabellen im root-Schema.
  • DATA_TYPE NUMBER(4\,0):integer führt dazu, dass der Database Migration Service bestimmte NUMBER(4,0)-Werte in PostgreSQL-INTEGER konvertiert.
  • Durch die MODIFY_TYPE-Anweisung konvertiert der Database Migration Service die Daten in der Spalte dates_and_times in der Quelltabelle events unabhängig vom tatsächlichen Format der Quellspalte in den PostgreSQL-Typ DATETIME.
  • 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 Quelltabelle events wird in derselben Tabelle im konvertierten Schema in event_dates umbenannt.
    • Die Spalte pseudonym in der Quelltabelle users wird in derselben Tabelle im konvertierten Schema in nickname umbenannt.
    Die Umbenennung wird nur auf die Tabellen events und users im root-Schema angewendet.
  • REPLACE_TABLES events:login_events users:platform_users benennt die folgenden Tabellen im konvertierten Schema um:
    • Die Tabelle events wird in login_events umbenannt.
    • Die Tabelle users wird in platform_users umbenannt.
    Die Umbenennung wird nur auf die Tabellen events und users im root-Schema angewendet.

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