Conversion d'Oracle en Amazon RDS pour PostgreSQL ou Amazon Aurora PostgreSQL - AWS Schema Conversion Tool

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.

Conversion d'Oracle en Amazon RDS pour PostgreSQL ou Amazon Aurora PostgreSQL

Lorsque vous convertissez une base de données Oracle en RDS pour PostgreSQL ou Amazon Aurora PostgreSQL, tenez compte des points suivants.

Lors de la conversion d'objets système Oracle en PostgreSQL, AWS SCT effectue les conversions comme indiqué dans le tableau suivant.

Objet du système Oracle Description Objet PostgreSQL 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 PostgreSQL. Pour plus d'informations, veuillez consulter Conversion du code SQL d'une application en utilisantAWS SCT.

Privilèges pour PostgreSQL en tant que base de données cible

Pour utiliser PostgreSQL comme cible, vous devez disposer de ce AWS SCT privilège. CREATE ON DATABASE Assurez-vous d'accorder ce privilège pour chaque base de données PostgreSQL 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 lui accorder des privilèges.

CREATE ROLE user_name LOGIN PASSWORD 'your_password'; GRANT CREATE ON DATABASE db_name TO user_name; ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;

Dans l'exemple précédent, remplacez user_name par le nom de votre utilisateur. Remplacez ensuite db_name par le nom de votre base de données cible. Enfin, remplacez your_password par un mot de passe sécurisé.

Pour utiliser Amazon RDS pour PostgreSQL comme cible, vous devez disposer de ce AWS SCT privilège. rds_superuser

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 superuser rôle.

Paramètres de conversion Oracle vers PostgreSQL

Pour modifier les paramètres de conversion Oracle vers PostgreSQL, choisissez Paramètres dansAWS SCT, puis Paramètres de conversion. Dans la liste supérieure, choisissez Oracle, puis Oracle — PostgreSQL. AWS SCTaffiche tous les paramètres disponibles pour la conversion d'Oracle vers PostgreSQL.

Les paramètres de conversion d'Oracle vers PostgreSQL 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 gravité des actions. AWS SCTajoute des commentaires dans le code converti pour les actions ayant le niveau de gravité sélectionné ou supérieur.

    Par exemple, pour minimiser le nombre de commentaires dans votre code converti, sélectionnez Erreurs uniquement. Pour inclure des commentaires pour toutes les actions dans votre code converti, choisissez Tous les messages.

  • Pour permettre AWS SCT de convertir des vues matérialisées Oracle en tables ou en vues matérialisées sur PostgreSQL. Pour la conversion des vues matérialisées en tant que, choisissez comment convertir vos vues matérialisées source.

  • Pour travailler avec votre code source Oracle lorsqu'il inclut les TO_NUMBER fonctions TO_CHARTO_DATE, et dont les paramètres ne sont pas pris en charge par PostgreSQL. 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 en charge par PostgreSQL, vous pouvez utiliser des fonctions et des fonctions PostgreSQL TO_CHAR natives. TO_DATE TO_NUMBER 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 mise en forme spécifiques à Oracle

    • La fonction TO_DATE () n'utilise pas de chaînes de mise en forme spécifiques à Oracle

    • La fonction TO_NUMBER () n'utilise pas de chaînes de mise en forme spécifiques à Oracle

  • Pour résoudre les cas où votre base de données Oracle source 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 ce type de BIGINT données. Cette approche améliore les performances de votre code converti. Pour adopter cette approche, sélectionnez Convertir les colonnes de clé primaire/étrangère NUMBER en colonnes BIGINT. 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 SQL dynamique. Le code de votre base de données peut modifier les valeurs de ces variables de chaîne. Pour vous assurer que la dernière valeur de cette variable de chaîne est AWS SCT toujours convertie, sélectionnez Convertir le code SQL dynamique créé dans les routines appelées.

  • Pour remédier à ce problème, les versions 10 et antérieures de PostgreSQL ne prennent pas en charge les procédures. Si vous ou vos utilisateurs ne connaissez pas l'utilisation des procédures dans PostgreSQL, vous AWS SCT pouvez convertir les procédures Oracle en fonctions PostgreSQL. Pour ce faire, sélectionnez Convertir les procédures en fonctions.

  • Pour voir des informations supplémentaires sur les actions effectuées. Pour ce faire, vous pouvez ajouter des fonctions spécifiques au pack d'extensions en sélectionnant Ajouter en cas d'exception, bloquer les problèmes de migration présentant les niveaux de gravité suivants. Choisissez ensuite des niveaux de gravité pour augmenter les exceptions définies par l'utilisateur.

  • Pour travailler avec une base de données Oracle source susceptible d'inclure des contraintes avec les noms générés automatiquement. Si votre code source utilise ces noms, veillez à sélectionner Convertir les noms de contraintes générés par le système en utilisant les noms d'origine de la source. Si votre code source utilise ces contraintes mais n'utilise 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 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. Si tel est le 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'émulation SYSDATE.

  • Pour utiliser les fonctions de l'extension orafce dans votre code converti. Pour ce faire, pour l'implémentation Utiliser Oracle, sélectionnez les fonctions à utiliser. Pour plus d'informations sur orafce, consultez orafce sur. GitHub

Conversion de séquences Oracle

AWS SCTconvertit des séquences d'Oracle vers 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
  1. Ouvrez votre AWS SCT projet avec Oracle comme source.

  2. Choisissez Paramètres, puis Paramètres de conversion.

  3. Dans la liste supérieure, choisissez Oracle, puis Oracle — PostgreSQL. AWS SCTaffiche tous les paramètres disponibles pour la conversion d'Oracle vers PostgreSQL.

  4. Choisissez Remplir les séquences converties avec la dernière valeur générée côté source.

  5. Cliquez sur OK pour enregistrer les paramètres et fermer la boîte de dialogue des paramètres de conversion.

Conversion de Oracle ROWID

Dans une base de données Oracle, la pseudo-colonne ROWID contient l'adresse de la ligne de table. La pseudocolonne ROWID est propre à Oracle. Elle AWS SCT convertit donc la pseudocolonne ROWID en colonne de données sur PostgreSQL. En utilisant cette conversion, vous pouvez conserver les informations ROWID.

Lors de la conversion de la pseudocolonne ROWID, AWS SCT vous pouvez créer une colonne de données avec le type de données. bigint S'il n'existe aucune clé primaire, AWS SCT définit la colonne ROWID comme clé primaire. S'il existe une clé primaire, AWS SCT définit la colonne ROWID avec une contrainte unique.

Si le code de votre base de données source inclut des opérations avec ROWID, 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
  1. Ouvrez votre AWS SCT projet avec Oracle comme source.

  2. Choisissez Paramètres, puis Paramètres de conversion.

  3. Dans la liste supérieure, choisissez Oracle, puis Oracle — PostgreSQL. AWS SCTaffiche tous les paramètres disponibles pour la conversion d'Oracle vers PostgreSQL.

  4. Pour Générer un ID 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 en tant que type de domaine de caractère pour créer une colonne de données de caractère.

  5. 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 du SQL dynamique : à l'aide d'une instruction EXECUTE IMMEDIATE ou en appelant des procédures dans le package DBMS_SQL. Si votre base de données Oracle source inclut des objets avec du SQL dynamique, utilisez-le AWS SCT pour convertir les instructions Oracle Dynamic SQL en PostgreSQL.

Pour convertir Oracle Dynamic SQL en PostgreSQL
  1. Ouvrez votre AWS SCT projet avec Oracle comme source.

  2. Choisissez un objet de base de données qui utilise du SQL dynamique dans l'arborescence des sources Oracle.

  3. 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 SQL dynamique.

    Conversion Dynamic SQL

Conversion de partitions Oracle

AWS SCTprend actuellement en charge les méthodes de partitionnement suivantes :

  • Range

  • Liste

  • Gamme multicolonne

  • Hachage

  • Composite (list-list, range-list, list-range, list-hash, range hash, hash-hash)