Espaces de travail de conversion

Les espaces de travail de conversion vous aident à convertir le schéma et les objets de votre base de données source en syntaxe SQL compatible avec votre base de données de destination. Cette page présente les espaces de travail de conversion de Database Migration Service:

Que vous utilisiez la conversion automatique des schémas ou que vous créiez un fichier de mappage de conversion supplémentaire, certains types de données ne sont pas compatibles avec les migrations Oracle. Pour en savoir plus, consultez la section Limites connues des types de données.

Conversion automatique du code et des schémas

Lorsque vous créez un espace de travail de conversion, Database Migration Service effectue automatiquement la conversion initiale du schéma. La conversion automatique de schémas est compatible avec un sous-ensemble très spécifique d'objets de base de données Oracle disponibles.

La conversion de code automatisée est compatible avec les objets de base de données Oracle suivants:

Éléments de schéma Oracle compatibles

  • Contraintes
  • Indexes (uniquement les index créés dans le même schéma que leur table)
  • Vues matérialisées
  • Types d'objets (prise en charge partielle)
  • Séquences
  • Synonymes
  • Tables
  • Vues

Éléments de code Oracle compatibles

  • Déclencheurs (au niveau de la table uniquement)
  • Packages
  • Fonctions
  • Procédures stockées

Éditeur SQL interactif

L'éditeur SQL interactif vous permet de modifier la syntaxe PostgreSQL convertie directement dans Database Migration Service. Vous pouvez l'utiliser pour résoudre les problèmes de conversion ou ajuster le schéma pour mieux répondre à vos besoins. Certains objets ne peuvent pas être modifiés dans l'éditeur intégré.

Objets Oracle modifiables

Après avoir converti le code et le schéma de la base de données source, vous pouvez utiliser l'éditeur interactif pour modifier le code SQL généré pour certains types d'objets. L'éditeur est compatible avec les objets Oracle suivants:

  • Déclencheurs de table (nécessite une autorisation)
  • Vues matérialisées
  • Packages
  • Fonctions, procédures stockées
  • Synonymes
  • Vues
  • Contraintes
  • Index
  • Séquences

De plus, certains objets sont convertis, mais ne peuvent pas être modifiés directement dans Database Migration Service. Pour modifier ces objets, vous devez effectuer les mises à jour directement dans la base de données de destination après avoir appliqué le schéma et le code convertis.

Objets non modifiables:

  • Types d'objets définis par l'utilisateur
  • Tables
  • Schémas

Fonctionnalités de conversion optimisées par Gemini

Database Migration Service intègre Gemini pour Google Cloud dans les espaces de travail de conversion pour vous aider à accélérer et à améliorer le processus de conversion dans deux domaines:

  • Fournissez des fonctionnalités d'explicabilité du code avec l'assistant de conversion: un ensemble d'invites dédiées qui peuvent vous aider à mieux comprendre la logique de conversion, à proposer des solutions aux problèmes de conversion ou à optimiser le code converti.

  • Accélérez l'application des correctifs aux problèmes de conversion grâce aux suggestions de conversion de code Gemini: un mécanisme permettant au modèle Gemini d'apprendre à mesure que vous corrigez les problèmes de conversion et de suggérer des modifications à d'autres objets défectueux dans l'espace de travail.

Pour en savoir plus sur la conversion assistée par Gemini, consultez les pages suivantes:

Fichiers de mise en correspondance des conversions

Vous pouvez personnaliser la logique de conversion à l'aide d'un fichier de mappage des conversions. Le fichier de mappage de conversion est un fichier texte contenant des instructions précises (appelées directives de conversion) sur la façon dont vos objets Oracle doivent être convertis en objets PostgreSQL.

Directives de conversion compatibles

Database Migration Service accepte les directives de conversion suivantes pour les fichiers de mappage de conversion:

EXPORT_SCHEMA

EXPORT_SCHEMA est une directive obligatoire pour tous les fichiers de mappage des conversions. Database Migration Service nécessite cette instruction pour s'assurer que vos schémas sources sont convertis en schémas de destination appropriés. Assurez-vous que vos fichiers de mappage des conversions incluent la ligne suivante:

EXPORT_SCHEMA 1

SCHEMA

Database Migration Service doit pouvoir déterminer quel schéma contient les objets à modifier avec vos directives de conversion. La directive SCHEMA entraîne les ajustements suivants au flux de conversion:

  • Database Migration Service ne convertit que ce schéma. Si vous devez convertir d'autres schémas dans un même espace de travail de conversion, vous devez importer plusieurs fichiers avec des schémas différents.
  • Toutes les autres directives de personnalisation fournies dans votre fichier ne s'appliquent qu'aux objets de ce schéma particulier.

Utilisez le format suivant :

SCHEMA SCHEMA_NAME

SCHEMA_NAME correspond au nom de votre schéma dans la base de données source.

  • Si vous incluez cette directive dans le fichier de mappage des conversions, toutes les personnalisations ne s'appliquent qu'aux objets contenus dans ce schéma spécifique. Si vous souhaitez personnaliser des objets dans d'autres schémas, vous devez créer plusieurs fichiers de mappage de conversion et les importer dans l'espace de travail de conversion.
  • Si vous ignorez cette directive, vous devez fournir des noms de schéma explicites pour les objets modifiés par d'autres directives de conversion. Par exemple, au lieu d'utiliser SOURCE_TABLE_NAME pour la directive REPLACE_TABLES, vous devez utiliser "SCHEMA_NAME.SOURCE_TABLE_NAME".

DATA_TYPE

Vous pouvez utiliser cette directive pour mapper explicitement tout type de données compatible entre la syntaxe Oracle et PostgreSQL. Cette directive attend une liste de mappages séparés par des virgules. La définition complète doit être fournie sur une seule ligne, mais vous devez inclure plusieurs directives DATA_TYPE dans votre fichier de configuration. Utilisez le format suivant :

DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1
DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...

ORACLE_DATA_TYPE et PGSQL_DATA_TYPE sont des types de données compatibles avec les versions Oracle et PostgreSQL respectives que vous utilisez dans votre migration. Pour en savoir plus sur les versions compatibles, consultez la section Présentation du scénario.

Exemple :

DATA_TYPE REAL:double precision,SMALLINT:integer

Pour en savoir plus sur les types de données Oracle et PostgreSQL, consultez les ressources suivantes:

MODIFY_TYPE

La directive MODIFY_TYPE vous permet de contrôler le type de données vers lequel Database Migration Service convertit une colonne spécifique de votre table source. Cette directive attend une liste de mappages séparés par des virgules. La définition complète doit être fournie sur une seule ligne, mais vous pouvez inclure plusieurs directives MODIFY_TYPE dans votre fichier de configuration. Utilisez le format suivant :

MODIFY_TYPE SOURCE_TABLE_NAME1:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE
MODIFY_TYPE SOURCE_TABLE_NAME2:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE...

Où :

  • SOURCE_TABLE_NAME est le nom de la table contenant la colonne dont vous souhaitez modifier le type de données.
  • COLUMN_NAME correspond au nom de la colonne pour laquelle vous souhaitez personnaliser le mappage des conversions.
  • EXPECTED_END_RESULT_DATA_TYPE est le type de données PostgreSQL que vous souhaitez utiliser pour la colonne convertie.

Exemple :

MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT

PG_INTEGER_TYPE

Par défaut,Database Migration Service convertit les types NUMBER(p,s) en type DECIMAL(p,s) PostgreSQL.

Vous pouvez modifier ce comportement avec la directive PG_INTEGER_TYPE. Définissez sa valeur sur 1 et forcez tous vos types NUMBER avec précision et échelle (NUMBER(p,s)) à être convertis en types smallint, integer ou bigint PostgreSQL en fonction du nombre de chiffres de précision.

Incluez le paramètre suivant dans votre fichier de mappage des conversions:

PG_INTEGER_TYPE 1

PG_NUMERIC_TYPE

Définissez cette directive sur 1 si vous souhaitez convertir tous vos types NUMBER avec précision et échelle (NUMBER(p,s)) en types real ou float PostgreSQL (en fonction de leur nombre de chiffres de précision).

Si vous définissez cette directive sur 0, vos valeurs NUMBER(p,s) conservent leur valeur d'origine exacte et utilisent le type de données PostgreSQL interne.

Incluez le paramètre suivant dans votre fichier de mappage des conversions:

PG_NUMERIC_TYPE 1

DEFAULT_NUMERIC

La conversion par défaut des NUMBER sans précision change si vous utilisez également la directive PG_INTEGER_TYPE:

  • Si vous utilisez la directive PG_INTEGER, les NUMBER sans précision sont convertis en valeurs DECIMAL.
  • Si vous n'utilisez pas la directive PG_INTEGER, les NUMBER sans précision sont convertis en valeurs BIGINT.

Vous pouvez modifier ce comportement et utiliser la directive DEFAULT_NUMERIC pour spécifier le type de données à utiliser pour les types NUMBER sans points de précision spécifiés. Utilisez le format suivant :

DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE

POSTGRESQL_NUMERIC_DATA_TYPE est l'une des valeurs suivantes: integer, smallint ou bigint.

Exemple :

DEFAULT_NUMERIC integer

REPLACE_COLS

Vous pouvez utiliser la directive REPLACE_COLS pour renommer des colonnes dans votre schéma converti. Cette directive attend une liste de mappages séparés par des virgules. Utilisez le format suivant :

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)...

Où :

  • SOURCE_TABLE_NAME correspond au nom de la table contenant la colonne dont vous souhaitez modifier le nom.
  • SOURCE_COLUMN_NAME correspond au nom de la colonne de votre source dont vous souhaitez modifier le nom.
  • DESTINATION_COLUMN_NAME est le nouveau nom que vous attribuez à la colonne que vous souhaitez utiliser dans le schéma converti.

Exemple :

REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)

REPLACE_TABLES

Vous pouvez utiliser la directive REPLACE_TABLES pour renommer des tables ou les déplacer vers un nouveau schéma. Cette directive attend une liste de mappages séparés par des espaces. Pour en savoir plus sur la syntaxe de chaque cas d'utilisation, développez les sections suivantes.

Renommer des tables

Pour renommer des tables dans votre schéma converti, utilisez le format suivant:

REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2

Où :

  • SOURCE_TABLE_NAME est le nom de la table source que vous souhaitez renommer dans le schéma converti.
  • DESTINATION_TABLE_NAME est le nouveau nom de la table que vous souhaitez utiliser dans le schéma converti.

Exemple :

REPLACE_TABLES "events:login_events" "users:platform_users"

Déplacer des tables entre des schémas

Vous pouvez utiliser cette directive pour déplacer des tables entre des schémas en ajoutant le préfixe du schéma au nouveau nom de la table. Ce mécanisme peut être utilisé, quelle que soit la façon dont vous utilisez la directive SCHEMA pour l'ensemble du fichier de conversion. Exemple :

REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
    

Alias pour personnaliser les types de données

Lorsque vous utilisez des directives de conversion pour modifier la façon dont Database Migration Service convertit différents types de données (par exemple, avec les directives DATA_TYPE, MODIFY_TYPE ou PG_NUMERIC_TYPE), vous pouvez utiliser des alias au lieu de vos types de données SQL sources.

Développez la section suivante pour afficher la liste des alias de type de données compatibles avec Database Migration Service.

Alias de type de données

Alias Converti en type PostgreSQL
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

Exemple de fichier de mappage des conversions

Consultez l'exemple de fichier de mappage de conversion suivant qui utilise toutes les directives de conversion de schéma compatibles:

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

Les résultats de l'utilisation de ce fichier sont les suivants:

  • EXPORT_SCHEMA 1 est une directive obligatoire.
  • SCHEMA root entraîne les ajustements suivants du flux de conversion :
    • Database Migration Service ne convertit que les entités du schéma root. Aucun autre schéma n'est converti.
    • Toutes les autres directives de personnalisation de ce fichier ne s'appliquent qu'aux colonnes et aux types de données définis dans le schéma root.
  • PG_INTEGER_TYPE 1 permet à Database Migration Service de convertir tous les types de données numériques Oracle trouvés dans les tables du schéma root en types spécifiques à PostgreSQL au lieu de types numériques portables ANSI.
  • DEFAULT_NUMERIC permet à Database Migration Service de convertir les valeurs NUMBER qui ne comportent pas de point de précision spécifié en type INTEGER PostgreSQL. Cela ne s'applique qu'aux valeurs NUMBER trouvées dans les tables du schéma root.
  • DATA_TYPE NUMBER(4\,0):integer entraîne la conversion de valeurs NUMBER(4,0) spécifiques en INTEGER PostgreSQL par Database Migration Service.
  • La directive MODIFY_TYPE permet à Database Migration Service de convertir spécifiquement les données de la colonne dates_and_times de la table source events au type DATETIME PostgreSQL, quel que soit le format de la colonne source.
  • REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname) oblige Database Migration Service à renommer les colonnes suivantes dans le schéma converti :
    • La colonne dates_and_times de la table source events est renommée event_dates dans la même table du schéma converti.
    • La colonne pseudonym de la table source users est renommée nickname dans la même table du schéma converti.
    L'opération de renommage ne s'applique qu'aux tables events et users du schéma root.
  • REPLACE_TABLES events:login_events users:platform_users renomme les tables suivantes dans le schéma converti :
    • La table events est rebaptisée login_events.
    • La table users est rebaptisée platform_users.
    L'opération de renommage ne s'applique qu'aux tables events et users du schéma root.

Anciens espaces de travail de conversion

Les anciens espaces de travail de conversion sont un type d'espaces de travail de conversion plus ancien et plus limité. Les anciens espaces de travail de conversion ne sont pas compatibles avec les fonctionnalités de conversion améliorées par Gemini ni avec l'éditeur SQL interactif. Vous ne pouvez les utiliser que pour convertir votre schéma source avec l'outil de migration Ora2Pg.

Nous vous déconseillons d'utiliser l'ancien type d'espaces de travail de conversion pour vos migrations. Si votre scénario nécessite l'utilisation d'anciens espaces de travail de conversion, consultez Utiliser d'anciens espaces de travail de conversion.

Étape suivante