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 :
Les présentations des conversions fournissent une section transversale de la progression de la conversion de votre schéma.
Objets compatibles avec la conversion déterministe du code et du schéma liste les objets Oracle compatibles avec la conversion déterministe du schéma.
Éditeur SQL interactif décrit les objets que vous pouvez modifier directement dans l'éditeur de l'espace de travail de conversion.
Les fonctionnalités de conversion optimisées par Gemini vous montrent comment intégrer l'assistance de l'IA générative pour accélérer le processus de conversion de schéma.
La section Fichiers de mappage des conversions présente les directives de personnalisation que vous pouvez utiliser pour remplacer les règles de conversion déterministe du schéma.
La section Anciens espaces de travail de conversion décrit les anciens espaces de travail qui ne sont pas compatibles avec l'éditeur SQL interactif.
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.


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.


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 :
Convertir le code et le schéma Oracle avec l'assistance Gemini
Exemple de workflow pour corriger les objets de code présentant des problèmes de conversion
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
Où 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 directiveREPLACE_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...
Où 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 :
- Types de données Oracle dans la documentation Oracle.
- Types de données PostgreSQL dans la documentation PostgreSQL.
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
, lesNUMBER
s sans précision sont convertis en valeursDECIMAL
. - Si vous n'utilisez pas la directive
PG_INTEGER
, lesNUMBER
sans précision sont convertis en valeursBIGINT
.
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
Où 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
.
- Database Migration Service ne convertit que les entités du schéma
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émaroot
en types spécifiques à PostgreSQL au lieu de types numériques portables ANSI.DEFAULT_NUMERIC
permet à Database Migration Service de convertir les valeursNUMBER
qui n'ont pas de point de précision spécifié en typeINTEGER
PostgreSQL. Cela ne s'applique qu'aux valeursNUMBER
trouvées dans les tables du schémaroot
.DATA_TYPE NUMBER(4\,0):integer
entraîne la conversion par Database Migration Service de valeursNUMBER(4,0)
spécifiques enINTEGER
PostgreSQL.- La directive
MODIFY_TYPE
permet à Database Migration Service de convertir les données de la colonnedates_and_times
de la table sourceevents
spécifiquement au type PostgreSQLDATETIME
, 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 tableevents
source est renomméeevent_dates
dans la même table du schéma converti. - La colonne
pseudonym
de la tableusers
source est renomméenickname
dans la même table du schéma converti.
events
etusers
du schémaroot
.- La colonne
REPLACE_TABLES events:login_events users:platform_users
renomme les tables suivantes dans le schéma converti :- La table
events
est renomméelogin_events
. - La table
users
est renomméeplatform_users
.
events
etusers
du schémaroot
.- La table
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 :