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 die Konvertierungsarbeitsbereiche von Database Migration Service:

Bestimmte Datentypen werden für Oracle-Migrationen nicht unterstützt. Weitere Informationen finden Sie unter Bekannte Einschränkungen für Datentypen.

Übersichten zum Konvertierungsfortschritt

Konvertierungsarbeitsbereiche bieten robuste Übersichtsinformationen, mit denen Sie Einblicke in die Gesamtzahl der ausstehenden oder behobenen Konvertierungsprobleme, von Gemini unterstützte Erweiterungen und den allgemeinen Zustand Ihres Konvertierungsprozesses erhalten.

Bildschirm mit dem Konvertierungsarbeitsbereich und dem Tab „Konvertierungsübersicht“, auf dem Sie die Anzahl der konvertierten Objekte, Konvertierungsprobleme und Verbesserungen durch die von Gemini unterstützte Konvertierung sehen.
Abbildung 1. Übersichtsbildschirm des Konvertierungsarbeitsbereichs, auf dem Sie den Fortschritt der Konvertierung verfolgen, Probleme ansehen und den resultierenden PostgreSQL-Code prüfen können. (Zum Vergrößern klicken)
Bildschirm mit dem Konvertierungsarbeitsbereich und dem Tab „Konvertierungsübersicht“, auf dem Sie die Anzahl der konvertierten Objekte, Konvertierungsprobleme und Verbesserungen durch die von Gemini unterstützte Konvertierung sehen.

In dieser Ansicht können Sie Objekte in Ihrem Schema nach Typ, Schweregrad des Problems, erforderlichen Maßnahmen oder Umwandlungsstatus filtern.

Bildschirm des Konvertierungsarbeitsbereichs, auf dem zu sehen ist, wie konvertierte Objekte nach Typ oder Status gefiltert werden können.
Abbildung 2. Konvertierte Objekte nach Status und Objekttyp filtern. (Zum Vergrößern klicken)
Bildschirm des Konvertierungsarbeitsbereichs, auf dem zu sehen ist, wie konvertierte Objekte nach Typ oder Status gefiltert werden können.

Weitere Informationen zur Verwendung von Conversion-Übersichten zum Prüfen von Conversion-Ergebnissen finden Sie unter Mit Conversion-Arbeitsbereichen arbeiten.

Deterministischer Code und Schemakonvertierung

Wenn Sie einen Konvertierungsarbeitsbereich erstellen, führt Database Migration Service sofort die erste Schemakonvertierung mit einer Reihe deterministischer Konvertierungsregeln durch, bei denen bestimmte Oracle-Datentypen und -Objekte bestimmten PostgreSQL-Datentypen und -Objekten zugeordnet werden. Dieser Prozess unterstützt nur eine sehr spezifische Teilmenge der verfügbaren Oracle-Datenbankobjekte.

Die deterministische 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 werden)
  • Materialisierte Ansichten
  • Objekttypen (teilweise Unterstützung)
  • Sequenzen
  • Synonyme
  • Tabellen
  • Aufrufe

Unterstützte Oracle-Codeelemente

  • Trigger (nur auf Tabellenebene)
  • Pakete
  • Funktionen
  • Gespeicherte Prozeduren

Interaktiver SQL-Editor

Mit dem interaktiven SQL-Editor können Sie die konvertierte PostgreSQL-Syntax direkt in 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 Code und das Schema der Quelldatenbank konvertiert haben, können Sie den generierten SQL-Code für bestimmte Objekttypen mit dem interaktiven Editor ä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 konvertierten Code angewendet haben.

Objekte, die nicht bearbeitet werden können:

  • Benutzerdefinierte Objekttypen
  • Tabellen
  • Schemas

Code- und Schema-Konvertierung mit Gemini beschleunigen

In Database Migration Service ist Gemini für Google Cloud in Konvertierungsarbeitsbereiche integriert, um den Konvertierungsprozess in den folgenden Bereichen zu beschleunigen und zu verbessern:

  • Verbessern Sie die deterministischen Konvertierungsergebnisse mit der automatischen Konvertierung auf Gemini-Basis, um die Leistungsfähigkeit von KI zu nutzen und die Anzahl der manuellen Anpassungen in Ihrem PostgreSQL-Code deutlich zu reduzieren.

  • Mit dem Conversion-Assistenten können Sie Code-Erklärungsfunktionen nutzen: eine Reihe von speziellen Prompts, mit denen Sie die Konvertierungslogik besser nachvollziehen, Korrekturen für Konvertierungsprobleme vorschlagen oder konvertierten Code optimieren können.

  • Mit Gemini-Codekonvertierungsvorschlägen können Sie Korrekturen für Konvertierungsprobleme beschleunigen. Dabei lernt das Gemini-Modell, während Sie Konvertierungsprobleme beheben, und schlägt Änderungen für andere fehlerhafte Objekte im Arbeitsbereich vor.

Weitere Informationen zur mit Gemini optimierten Konvertierung finden Sie auf den folgenden Seiten:

Dateien für die Conversion-Zuordnung

Sie können die Conversion-Logik mit einer Conversion-Zuordnungsdatei anpassen. Die Datei für die Konvertierungszuordnung ist eine Textdatei, die genaue Anweisungen (Konvertierungsanweisungen) dafür enthält, wie Ihre Oracle-Objekte in PostgreSQL-Objekte konvertiert werden sollen.

Unterstützte Conversion-Direktiven

Database Migration Service unterstützt die folgenden Konvertierungsanweisungen für Konvertierungszuordnungsdateien:

EXPORT_SCHEMA

EXPORT_SCHEMA ist eine Pflichtanweisung für alle Dateien zur Conversion-Zuordnung. Database Migration Service benötigt diese Anweisung, um sicherzustellen, dass Ihre Quellschemas in die richtigen Zielschemas konvertiert werden. Ihre Dateien für das Conversion-Mapping müssen diese Zeile enthalten:

EXPORT_SCHEMA 1

SCHEMA

Database Migration Service muss ermitteln können, welches Schema die Objekte enthält, die mit Ihren Konvertierungsanweisungen geändert werden sollen. Die SCHEMA-Anweisung führt zu den folgenden Anpassungen des Conversion-Ablaufs:

  • Database Migration Service konvertiert nur dieses Schema. Wenn Sie andere Schemas in einem einzelnen Konvertierungsarbeitsbereich konvertieren möchten, müssen Sie mehrere Dateien mit unterschiedlichen Schemas hochladen.
  • Alle anderen Anpassungsanweisungen in Ihrer Datei 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 Direktive in die Datei für die Conversion-Zuordnung 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 Dateien für die Konvertierungszuordnung erstellen und in den Konvertierungsarbeitsbereich hochladen.
  • Wenn Sie diese Direktive überspringen, müssen Sie explizite Schemanamen für Objekte angeben, die von anderen Konvertierungsdirektiven geändert werden. Wenn Sie beispielsweise SOURCE_TABLE_NAME für die REPLACE_TABLES-Anweisung verwenden, müssen Sie stattdessen "SCHEMA_NAME.SOURCE_TABLE_NAME" verwenden.

DATA_TYPE

Mit dieser Direktive können Sie jeden unterstützten Datentyp explizit zwischen Oracle- und PostgreSQL-Syntax zuordnen. Diese Direktive erwartet eine durch Kommas getrennte Liste von Zuordnungen. 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 für die 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 MODIFY_TYPE-Anweisung können Sie festlegen, in welchen Datentyp Database Migration Service eine bestimmte Spalte in der Quelltabelle konvertiert. Diese Direktive erwartet eine durch Kommas getrennte Liste von Zuordnungen. Die gesamte Definition muss in einer einzigen Zeile angegeben werden. Sie können jedoch mehrere MODIFY_TYPE-Anweisungen 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, deren Datentyp Sie ä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 konvertiert Database Migration Service die NUMBER(p,s)-Typen in den PostgreSQL-Typ DECIMAL(p,s).

Sie können dieses Verhalten mit der Direktive PG_INTEGER_TYPE ändern. Legen Sie den Wert auf 1 fest und erzwingen Sie, dass alle Ihre NUMBER-Typen mit Genauigkeit und Skalierung (NUMBER(p,s)) basierend auf der Anzahl der Genauigkeitsziffern in die PostgreSQL-Typen smallint, integer oder bigint konvertiert werden.

Fügen Sie Ihrer Datei für die Conversion-Zuordnung die folgende Einstellung hinzu:

PG_INTEGER_TYPE 1

PG_NUMERIC_TYPE

Legen Sie diese Direktive auf 1 fest, wenn Sie alle Ihre NUMBER-Typen mit Genauigkeit und Skalierung (NUMBER(p,s)) in PostgreSQL-Typen real oder float konvertieren möchten (basierend auf der Anzahl der Genauigkeitsziffern).

Wenn Sie diese Direktive auf 0 festlegen, behalten Ihre NUMBER(p,s)-Werte ihren genauen Originalwert und verwenden den internen PostgreSQL-Datentyp.

Fügen Sie Ihrer Datei für die Conversion-Zuordnung die folgende Einstellung hinzu:

PG_NUMERIC_TYPE 1

DEFAULT_NUMERIC

Die Standardkonvertierung für NUMBER ohne Genauigkeit ändert sich, je nachdem, ob Sie auch die PG_INTEGER_TYPE-Anweisung verwenden:

  • Wenn Sie die Direktive PG_INTEGER verwenden, werden NUMBER ohne Genauigkeit in DECIMAL-Werte umgewandelt.
  • Wenn Sie die PG_INTEGER-Anweisung nicht verwenden, werden NUMBER ohne Genauigkeit in BIGINT-Werte konvertiert.

Sie können dieses Verhalten ändern und mit der DEFAULT_NUMERIC-Anweisung 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 einen der folgenden Werte: integer, smallint, bigint.

Beispiel:

DEFAULT_NUMERIC integer

REPLACE_COLS

Mit der Anweisung REPLACE_COLS können Sie Spalten in Ihrem konvertierten Schema umbenennen. Diese Direktive erwartet eine durch Kommas getrennte Liste von Zuordnungen. 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 Ihrer 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. Diese Direktive erwartet eine Liste von Zuordnungen, die durch Leerzeichen getrennt sind. Weitere Informationen zur Syntax für die einzelnen Anwendungsfälle finden Sie in den folgenden Abschnitten.

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 für die 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 Konvertierungsdatei verwenden. Beispiel:

REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
    

Aliase zum Anpassen von Datentypen

Wenn Sie Konvertierungsanweisungen verwenden, um zu ändern, wie Database Migration Service verschiedene Datentypen konvertiert (z. B. mit den Anweisungen DATA_TYPE, MODIFY_TYPE oder PG_NUMERIC_TYPE), können Sie Aliase anstelle Ihrer SQL-Quelldatentypen verwenden.

Erweitern Sie den folgenden Abschnitt, um die Liste der von Database Migration Service unterstützten Aliasse für Datentypen aufzurufen.

Datentyp-Aliasse

Alias Konvertiert in PostgreSQL-Typ
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

Beispiel für eine Datei zur Conversion-Zuordnung

Unten sehen Sie eine Beispielzuordnungsdatei für die Konvertierung, in der alle unterstützten Schema-Konvertierungsanweisungen verwendet werden:

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 Ergebnisse der Verwendung dieser Datei sind wie folgt:

  • EXPORT_SCHEMA 1 ist eine erforderliche Anweisung.
  • SCHEMA root führt zu den folgenden Anpassungen des Conversion-Ablaufs:
    • Database Migration Service führt die Konvertierung nur für Entitäten im Schema root durch. Andere Schemas werden nicht konvertiert.
    • Alle anderen Anpassungsanweisungen in dieser Datei gelten nur für Spalten und Datentypen, die im Schema root definiert sind.
  • Mit PG_INTEGER_TYPE 1 werden alle numerischen Oracle-Datentypen, die in Tabellen im Schema root gefunden werden, von Database Migration Service in PostgreSQL-spezifische Typen anstelle von ANSI-kompatiblen numerischen Typen konvertiert.
  • Durch DEFAULT_NUMERIC werden NUMBER-Werte ohne angegebenen Dezimalpunkt von Database Migration Service in den PostgreSQL-Typ INTEGER konvertiert. 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-Werte konvertiert.
  • Mit der MODIFY_TYPE-Anweisung wird der Database Migration Service angewiesen, die Daten in der Spalte dates_and_times der Quelltabelle events in den PostgreSQL-Typ DATETIME zu konvertieren, unabhängig vom tatsächlichen Format der Quellspalte.
  • REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname) bewirkt, dass der Database Migration Service die folgenden Spalten im konvertierten Schema umbenennt:
    • 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.
    Der Umbenennungsvorgang wird nur auf die Tabellen events und users im Schema root 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.
    Der Umbenennungsvorgang wird nur auf die Tabellen events und users im Schema root angewendet.

Alte Konvertierungsarbeitsbereiche

Legacy-Konvertierungsarbeitsbereiche sind eine ältere, eingeschränktere Art von Konvertierungsarbeitsbereichen. In Legacy-Arbeitsbereichen für Conversions werden keine Gemini-basierten Conversion-Funktionen oder der interaktive SQL-Editor unterstützt. Sie können sie nur verwenden, um Ihr Quellschema mit dem Ora2Pg-Migrationstool zu konvertieren.

Wir empfehlen, für Ihre Migrationen nicht den alten Typ von Conversion-Arbeitsbereichen zu verwenden. Wenn Sie Legacy-Konvertierungsarbeitsbereiche benötigen, lesen Sie den Abschnitt Legacy-Konvertierungsarbeitsbereiche verwenden.

Nächste Schritte

Weitere Informationen zur Verwendung von Konvertierungsarbeitsbereichen finden Sie in den folgenden Artikeln: