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 dans la syntaxe SQL compatible avec votre base de données de destination. Cette page présente les espaces de travail de conversion Database Migration Service :

Certains types de données ne sont pas compatibles avec les migrations Oracle. Pour en savoir plus, consultez Limites connues pour les types de données.

Présentation de la progression des conversions

Des informations générales robustes sur les espaces de travail de conversion, qui vous permettent d'obtenir des insights sur le nombre total de problèmes de conversion en suspens ou résolus, les augmentations assistées par Gemini et l'état général de votre processus de conversion.

Écran de l'espace de travail de conversion avec l'onglet "Présentation de la conversion" où vous pouvez voir le nombre d'objets convertis, les problèmes de conversion et les améliorations de la conversion assistée par Gemini.
Figure 1. Écran de présentation de l'espace de travail de conversion, où vous pouvez suivre la progression de votre conversion, afficher les problèmes et inspecter le code PostgreSQL obtenu. (cliquez pour agrandir)
Écran de l'espace de travail de conversion avec l'onglet "Présentation de la conversion" où vous pouvez voir le nombre d'objets convertis, les problèmes de conversion et les améliorations de la conversion assistée par Gemini.

Vous pouvez utiliser cette vue pour filtrer les objets de votre schéma par type, niveau de gravité du problème, actions requises ou état de la conversion.

Écran de l'espace de travail de conversion montrant comment filtrer les objets convertis par type ou état.
Figure 2. Filtrage des objets convertis par état et type d'objet. (cliquez pour agrandir)
Écran de l'espace de travail de conversion montrant comment filtrer les objets convertis par type ou état.

Pour en savoir plus sur l'utilisation des aperçus des conversions pour examiner les résultats des conversions, consultez Utiliser les espaces de travail de conversion.

Conversion déterministe du code et du schéma

Lorsque vous créez un espace de travail de conversion, Database Migration Service effectue immédiatement la conversion initiale du schéma à l'aide d'un ensemble de règles de conversion déterministes, où des types de données et des objets Oracle spécifiques sont mappés à des types de données et des objets PostgreSQL spécifiques. Cette procédure est compatible avec un sous-ensemble très spécifique des objets de base de données Oracle disponibles.

La conversion déterministe du code est compatible avec les objets de base de données Oracle suivants :

Éléments de schéma Oracle compatibles

  • Contraintes
  • Index (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 des tables 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 afin de mieux répondre à vos besoins. Certains objets ne peuvent pas être modifiés dans l'éditeur intégré.

Objets Oracle modifiables

Une fois que vous avez 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 (autorisation requise)
  • 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 qui ne peuvent pas être modifiés :

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

Accélérer la conversion de code et de schémas avec Gemini

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

  • Améliorez les résultats de la conversion déterministe grâce à la conversion automatique optimisée par Gemini. Utilisez la puissance de l'IA pour réduire considérablement le nombre d'ajustements manuels nécessaires dans votre code PostgreSQL.

  • Fournissez des fonctionnalités d'explication du code avec l'assistant de conversion : un ensemble de requêtes dédiées qui peuvent vous aider à mieux comprendre la logique de conversion, à proposer des corrections pour les problèmes de conversion ou à optimiser le code converti.

  • Accélérez l'application de correctifs pour les 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 pour d'autres objets défectueux dans l'espace de travail.

Pour en savoir plus sur la conversion optimisé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 acceptées

Database Migration Service est compatible avec 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 mise en correspondance des conversions. Database Migration Service a besoin de 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 cette ligne :

EXPORT_SCHEMA 1

SCHEMA

Database Migration Service doit pouvoir déterminer le schéma contenant les objets à modifier avec vos directives de conversion. L'instruction SCHEMA entraîne les ajustements suivants du parcours 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 spécifique.

Utilisez le format suivant :

SCHEMA SCHEMA_NAME

SCHEMA_NAME est le 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 n'importe quel 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 pouvez 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 lors de votre migration. Pour en savoir plus sur les versions compatibles, consultez 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 dans 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 de conversion.
  • EXPECTED_END_RESULT_DATA_TYPE correspond au 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 la conversion de tous vos types NUMBER avec précision et échelle (NUMBER(p,s)) en types PostgreSQL smallint, integer ou bigint 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 PostgreSQL real ou float (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 selon que vous utilisez également la directive PG_INTEGER_TYPE :

  • Si vous utilisez la directive PG_INTEGER, les NUMBERs 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 les colonnes de 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 est le 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 que vous souhaitez modifier.
  • DESTINATION_COLUMN_NAME est le nouveau nom que vous souhaitez attribuer à la colonne à 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 les 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 correspond au 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 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 types de données compatibles avec Database Migration Service.

Alias de type de données

Alias Type PostgreSQL converti
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 acceptées :

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

Voici les résultats de l'utilisation de ce fichier :

  • EXPORT_SCHEMA 1 est une directive obligatoire.
  • SCHEMA root entraîne les ajustements suivants du parcours 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 n'ont 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 par Database Migration Service de valeurs NUMBER(4,0) spécifiques en INTEGER PostgreSQL.
  • La directive MODIFY_TYPE permet à Database Migration Service de convertir les données de la colonne dates_and_times de la table source events spécifiquement au type PostgreSQL DATETIME, quel que soit le format réel de la colonne source.
  • REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname) permet à Database Migration Service de renommer les colonnes suivantes dans le schéma converti :
    • La colonne dates_and_times de la table events source est renommée event_dates dans la même table du schéma converti.
    • La colonne pseudonym de la table users source 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 renommée login_events.
    • La table users est renommé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'espace 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 optimisé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 les anciens espaces de travail de conversion.

Étapes suivantes

Pour savoir comment utiliser les espaces de travail de conversion, consultez les articles suivants :