Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Migration d'Oracle vers Amazon RDS for Postgre SQL ou Amazon Aurora Postgre avec SQL AWS Schema Conversion Tool
Lorsque vous convertissez une base de données Oracle RDS pour Postgre SQL ou Amazon Aurora PostgreSQL, tenez compte de ce qui suit.
Rubriques
Lorsque vous convertissez des objets du système Oracle en PostgreSQL, AWS SCT effectuez les conversions comme indiqué dans le tableau suivant.
Objet du système Oracle | Description | Objet Postgre SQL converti |
---|---|---|
V$ VERSION | Affiche les numéros de version des éléments de la bibliothèque principale dans la base de données Oracle | aws_oracle_ext.v$version |
V$ INSTANCE | Vue qui indique l'état de l'instance actuelle. | aws_oracle_ext.v$instance |
Vous pouvez l'utiliser AWS SCT pour convertir des fichiers Oracle SQL *Plus en psql, qui est une interface basée sur un terminal pour Postgre. SQL Pour de plus amples informations, veuillez consulter Conversion d'une application à SQL l'aide AWS SCT.
Privilèges pour Postgre SQL en tant que base de données cible
Pour utiliser Postgre SQL comme cible, le CREATE ON DATABASE
privilège est AWS SCT requis. Assurez-vous d'accorder ce privilège à chaque base de SQL données Postgre cible.
Pour utiliser les synonymes publics convertis, remplacez le chemin de recherche par défaut de la base de données par"$user", public_synonyms, public
.
Vous pouvez utiliser l’exemple de code suivant pour créer un utilisateur de base de données et accorder les privilèges.
CREATE ROLE
user_name
LOGIN PASSWORD 'your_password
'; GRANT CREATE ON DATABASEdb_name
TOuser_name
; ALTER DATABASEdb_name
SET SEARCH_PATH = "$user", public_synonyms, public;
Dans l'exemple précédent, remplacez user_name
avec le nom de votre utilisateur. Ensuite, remplacez db_name
avec le nom de votre base de données cible. Enfin, remplacez your_password
avec un mot de passe sécurisé.
Pour utiliser Amazon RDS pour Postgre SQL comme cible, vous devez AWS SCT disposer du rds_superuser
privilège.
Dans PostgreSQL, seul le propriétaire du schéma ou a superuser
peut supprimer un schéma. Le propriétaire peut supprimer un schéma et tous les objets qu'il inclut même si le propriétaire du schéma ne possède pas certains de ses objets.
Lorsque vous utilisez différents utilisateurs pour convertir et appliquer différents schémas à votre base de données cible, un message d'erreur peut s'afficher lorsque vous ne AWS SCT pouvez pas supprimer un schéma. Pour éviter ce message d’erreur, utilisez le rôle superuser
.
Paramètres de SQL conversion d'Oracle vers Postgre
Pour modifier les paramètres de SQL conversion d'Oracle vers Postgre, choisissez Paramètres dans AWS SCT, puis sélectionnez Paramètres de conversion. Dans la liste supérieure, choisissez Oracle, puis Oracle — Postgre SQL. AWS SCT affiche tous les paramètres disponibles pour la SQL conversion d'Oracle vers Postgre.
Les paramètres de SQL conversion d'Oracle vers Postgre AWS SCT incluent des options pour les éléments suivants :
-
Pour limiter le nombre de commentaires contenant des actions dans le code converti.
Pour Ajouter des commentaires dans le code converti pour les actions de gravité sélectionnée ou supérieure, choisissez la sévérité des actions. AWS SCT ajoute des commentaires dans le code converti pour les actions dont la sévérité est sélectionnée ou supérieure.
Par exemple, pour réduire au maximum le nombre de commentaires dans votre code converti, choisissez Erreurs uniquement. Pour inclure les commentaires pour tous les éléments d’action de votre code converti, choisissez Tous les messages.
-
Pour permettre AWS SCT de convertir les vues matérialisées Oracle en tables ou en vues matérialisées sur Postgre. SQL Pour la conversion des vues matérialisées en tant que, choisissez le mode de conversion de vos vues matérialisées source.
-
Pour travailler avec votre code source Oracle lorsqu'il inclut les
TO_NUMBER
fonctionsTO_CHAR
TO_DATE
, et avec des paramètres non pris en charge par SQL Postgre. Par défaut, AWS SCT émule l'utilisation de ces paramètres dans le code converti.Lorsque votre code source Oracle inclut uniquement des paramètres pris SQL en charge par Postgre, vous pouvez utiliser les fonctions et
TO_NUMBER
les fonctions Postgre SQLTO_CHAR
natives.TO_DATE
Dans ce cas, le code converti fonctionne plus rapidement. Pour inclure uniquement ces paramètres, sélectionnez les valeurs suivantes :La fonction TO_ CHAR () n'utilise pas de chaînes de formatage spécifiques à Oracle
La fonction TO_ DATE () n'utilise pas de chaînes de formatage spécifiques à Oracle
La fonction TO_ NUMBER () n'utilise pas de chaînes de formatage spécifiques à Oracle
-
Pour remédier au cas où votre base de données source Oracle ne stocke que des valeurs entières dans les colonnes de clé principale ou étrangère du type de
NUMBER
données, AWS SCT vous pouvez convertir ces colonnes en type deBIGINT
données. Cette approche améliore les performances de votre code converti. Pour adopter cette approche, sélectionnez Convertir les colonnes de clé NUMBER primaire/étrangère en BIGINT colonnes. Assurez-vous que votre source n’inclut pas de valeurs à virgule flottante dans ces colonnes pour éviter toute perte de données. -
Pour ignorer les déclencheurs et les contraintes désactivés dans votre code source. Pour ce faire, choisissez Ignorer les déclencheurs et les contraintes désactivés.
-
À utiliser AWS SCT pour convertir des variables de chaîne appelées dynamiquesSQL. Le code de la base de données peut modifier les valeurs de ces variables de chaîne. Pour vous assurer que cela convertit AWS SCT toujours la dernière valeur de cette variable de chaîne, sélectionnez Convertir le SQL code dynamique créé dans des routines appelées.
-
Pour remédier à ce problème, les SQL versions 10 et antérieures de Postgre ne prennent pas en charge les procédures. Si vous ou vos utilisateurs ne connaissez pas l'utilisation des procédures dans PostgreSQL, AWS SCT vous pouvez convertir les procédures Oracle en fonctions PostgreSQL. Pour ce faire, sélectionnez Convertir les procédures en fonctions.
-
Pour obtenir des informations supplémentaires sur les actions survenues. Pour ce faire, vous pouvez ajouter des fonctions spécifiques au pack d'extension en sélectionnant Ajouter un bloc de levée d'exception pour les problèmes de migration présentant les niveaux de gravité suivants. Choisissez ensuite les niveaux de gravité pour déclencher les exceptions définies par l’utilisateur.
-
Pour travailler avec une base de données Oracle source susceptible d'inclure des contraintes liées aux noms générés automatiquement. Si votre code source utilise ces noms, assurez-vous de sélectionner Convertir les noms de contraintes générés par le système à l'aide des noms d'origine de la source. Si votre code source utilise ces contraintes mais pas leur nom, désactivez cette option pour augmenter la vitesse de conversion.
-
Pour déterminer si votre base de données et vos applications s'exécutent dans des fuseaux horaires différents. Par défaut, AWS SCT émule les fuseaux horaires dans le code converti. Toutefois, vous n’avez pas besoin de cette émulation lorsque votre base de données et vos applications utilisent le même fuseau horaire. Dans ce cas, sélectionnez Le fuseau horaire du côté client correspond au fuseau horaire du serveur.
-
Pour déterminer si vos bases de données source et cible s'exécutent dans des fuseaux horaires différents. Dans ce cas, la fonction qui émule la fonction Oracle
SYSDATE
intégrée renvoie des valeurs différentes de celles de la fonction source. Pour vous assurer que vos fonctions source et cible renvoient les mêmes valeurs, choisissez Définir le fuseau horaire par défaut pour l'SYSDATEémulation. -
Pour utiliser les fonctions de l'extension orafce dans votre code converti. Pour ce faire, dans Utiliser l'implémentation d'Oracle, sélectionnez les fonctions à utiliser. Pour plus d'informations sur Oracle, voir orace
on. GitHub
Conversion de séquences Oracle
AWS SCT convertit les séquences d'Oracle en PostgreSQL. Si vous utilisez des séquences pour maintenir des contraintes d'intégrité, assurez-vous que les nouvelles valeurs d'une séquence migrée ne chevauchent pas les valeurs existantes.
Pour renseigner les séquences converties avec la dernière valeur de la base de données source
-
Ouvrez votre AWS SCT projet avec Oracle comme source.
-
Choisissez Paramètres, puis Paramètres de conversion.
-
Dans la liste supérieure, choisissez Oracle, puis Oracle — Postgre SQL. AWS SCT affiche tous les paramètres disponibles pour la SQL conversion d'Oracle vers Postgre.
-
Choisissez Remplir les séquences converties avec la dernière valeur générée côté source.
-
Cliquez sur OK pour enregistrer les paramètres et fermer la boîte de dialogue des paramètres de conversion.
Conversion d'Oracle ROWID
Dans une base de données Oracle, la ROWID pseudocolonne contient l'adresse de la ligne de la table. La ROWID pseudocolonne est propre à Oracle. Elle est donc AWS SCT convertie en ROWID colonne de données sur Postgre. SQL En utilisant cette conversion, vous pouvez conserver les ROWID informations.
Lors de la conversion de la ROWID pseudocolonne, AWS SCT vous pouvez créer une colonne de données avec le type de bigint
données. S'il n'existe aucune clé primaire, AWS SCT définit la ROWID colonne comme clé primaire. S'il existe une clé primaire, AWS SCT définit la ROWID colonne avec une contrainte unique.
Si le code de votre base de données source inclut des ROWID opérations que vous ne pouvez pas exécuter à l'aide d'un type de données numérique, vous AWS SCT pouvez créer une colonne de données avec ce type de character varying
données.
Pour créer une colonne de données pour Oracle ROWID pour un projet
-
Ouvrez votre AWS SCT projet avec Oracle comme source.
-
Choisissez Paramètres, puis Paramètres de conversion.
-
Dans la liste supérieure, choisissez Oracle, puis Oracle — Postgre SQL. AWS SCT affiche tous les paramètres disponibles pour la SQL conversion d'Oracle vers Postgre.
-
Pour Générer un identifiant de ligne, effectuez l'une des opérations suivantes :
-
Choisissez Générer comme identité pour créer une colonne de données numériques.
-
Choisissez Générer comme type de domaine de caractères pour créer une colonne de données de caractères.
-
-
Cliquez sur OK pour enregistrer les paramètres et fermer la boîte de dialogue des paramètres de conversion.
Conversion d'Oracle Dynamic SQL
Oracle propose deux méthodes pour implémenter la dynamique SQL : en utilisant une EXECUTE IMMEDIATE instruction ou en appelant des procédures dans le SQL package DBMS _. Si votre base de données Oracle source inclut des objets dynamiquesSQL, utilisez-les AWS SCT pour convertir les SQL instructions dynamiques Oracle en PostgreSQL.
Pour convertir Oracle Dynamic SQL en Postgre SQL
Ouvrez votre AWS SCT projet avec Oracle comme source.
Choisissez un objet de base de données qui utilise la dynamique SQL dans l'arborescence des sources Oracle.
Ouvrez le menu contextuel (clic droit) de l'objet, choisissez Convertir le schéma et acceptez de remplacer les objets s'ils existent. La capture d'écran suivante montre la procédure convertie sous la procédure Oracle avec dynamiqueSQL.
Conversion de partitions Oracle
AWS SCT prend actuellement en charge les méthodes de partitionnement suivantes :
-
Range
-
Liste
-
Gamme multicolonnes
-
Hachage
-
Composite (liste de liste, liste de plages, plage de listes, hachage de liste, hachage de plage, hachage de hachage)