

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.

# Migrer les fonctions natives d'Oracle vers PostgreSQL à l'aide d'extensions
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions"></a>

*Pinesh Singal, Amazon Web Services*

## Résumé
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-summary"></a>

Ce modèle de migration fournit des step-by-step conseils pour migrer une instance de base de données Amazon Relational Database Service (Amazon RDS) pour Oracle vers une base de données Amazon RDS for PostgreSQL ou Amazon Aurora PostgreSQL compatible Edition en modifiant le code intégré natif et les extensions de PostgreSQL (). `aws_oracle_ext` `orafce` `psql` Cela permettra de gagner du temps de traitement.

Le modèle décrit une stratégie de migration manuelle hors ligne sans interruption pour une base de données source Oracle de plusieurs téraoctets comportant un grand nombre de transactions.

Le processus de migration utilise AWS Schema Conversion Tool (AWS SCT) avec les `orafce` extensions `aws_oracle_ext` et pour convertir un schéma de base de données Amazon RDS for Oracle en un schéma de base de données compatible avec Amazon RDS pour PostgreSQL ou Aurora PostgreSQL. Le code est ensuite modifié manuellement en code intégré natif compatible `psql` avec PostgreSQL. Cela est dû au fait que les appels d'extension ont un impact sur le traitement du code sur le serveur de base de données PostgreSQL et que le code d'extension n'est pas entièrement conforme ou compatible avec le code PostgreSQL.

Ce modèle se concentre principalement sur la migration manuelle de codes SQL à l'aide d'AWS SCT et des extensions `aws_oracle_ext` et. `orafce` Vous convertissez les extensions déjà utilisées en extensions natives de `psql` PostgreSQL (). Ensuite, vous supprimez toutes les références aux extensions et vous convertissez les codes en conséquence.

## Conditions préalables et limitations
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif 
+ Système d'exploitation (Windows ou Mac) ou EC2 instance Amazon (en cours d'exécution) 
+ Orace

**Limites**

Toutes les fonctions Oracle utilisant `aws_oracle_ext` ou les `orafce` extensions ne peuvent pas être converties en fonctions PostgreSQL natives. Il peut nécessiter une refonte manuelle afin de le compiler avec les bibliothèques PostgreSQL.

L'un des inconvénients de l'utilisation des extensions AWS SCT est leur faible performance lors de l'exécution et de la récupération des résultats. Son coût peut être compris à partir d'un simple plan [PostgreSQL EXPLAIN](https://www.postgresql.org/docs/current/sql-explain.html) (plan d'exécution d'une instruction) relatif à la migration de la fonction `SYSDATE` Oracle vers la fonction `NOW()` PostgreSQL entre les trois codes `aws_oracle_ext` (`orafce`,, `psql` et default), comme expliqué dans *la section Contrôle de comparaison des performances du document joint*.

**Versions du produit**
+ **Source :** base de données Amazon RDS pour Oracle 10.2 et versions ultérieures (pour 10.x), 11g (11.2.0.3.v1 et versions ultérieures) et jusqu'à 12.2, 18c et 19c (et versions ultérieures) pour Enterprise Edition, Standard Edition, Standard Edition 1 et Standard Edition 2
+ **Cible** : base de données compatible avec Amazon RDS for PostgreSQL ou Aurora PostgreSQL 9.4 et versions ultérieures (pour 9.x), 10.x, 11.x, 12.x, 13.x et 14.x (et versions ultérieures)
+ **AWS SCT** : dernière version (ce modèle a été testé avec 1.0.632)
+ **Oracle : dernière version (ce** modèle a été testé avec 3.9.0)

## Architecture
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-architecture"></a>

**Pile technologique source**
+ Une instance de base de données Amazon RDS for Oracle avec la version 12.1.0.2.v18

**Pile technologique cible**
+ Une instance de base de données compatible avec Amazon RDS for PostgreSQL ou Aurora PostgreSQL avec la version 11.5

**Architecture de migration de base de données**

Le schéma suivant représente l'architecture de migration de base de données entre les bases de données Oracle source et PostgreSQL cible. L'architecture comprend le cloud AWS, un cloud privé virtuel (VPC), des zones de disponibilité, un sous-réseau privé, une base de données Amazon RDS pour Oracle, AWS SCT, une base de données compatible Amazon RDS pour PostgreSQL ou Aurora PostgreSQL, des extensions pour Oracle (et) et des fichiers de langage de requête structuré (SQL). `aws_oracle_ext` `orafce`

![Le processus est expliqué dans la liste suivante.](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/158847bb-27ef-4915-a9ca-7d87073792c1/images/234b824a-bfe5-4ef0-9fa7-8401370b92a5.png)


1. Lancez l'instance de base de données Amazon RDS pour Oracle (base de données source).

1. Utilisez AWS SCT avec les packs d'`orafce`extension `aws_oracle_ext` et pour convertir le code source d'Oracle vers PostreSQL.

1. La conversion produit des fichiers .sql migrés compatibles avec PostgreSQL.

1. Convertissez manuellement les codes d'extension Oracle non convertis en codes PostgreSQL (). `psql`

1. La conversion manuelle produit des fichiers .sql convertis compatibles avec PostgreSQL.

1. Exécutez ces fichiers .sql sur votre instance de base de données Amazon RDS for PostgreSQL (base de données cible).

## Outils
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-tools"></a>

**Outils**

*Services AWS*
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) - AWS Schema Conversion Tool (AWS SCT) convertit votre schéma de base de données existant d'un moteur de base de données à un autre. Vous pouvez convertir un schéma de traitement transactionnel en ligne (OLTP) relationnel ou un schéma d'entrepôt de données. Votre schéma converti convient à une instance de base de données Amazon RDS pour MySQL, à un cluster de base de données Amazon Aurora, à une instance de base de données Amazon RDS pour PostgreSQL ou à un cluster Amazon Redshift. Le schéma converti peut également être utilisé avec une base de données sur une EC2 instance Amazon ou stocké sous forme de données dans un compartiment Amazon S3.

  AWS SCT fournit une interface utilisateur basée sur un projet pour convertir automatiquement le schéma de base de données de votre base de données source dans un format compatible avec votre instance Amazon RDS cible. 

  Vous pouvez utiliser AWS SCT pour effectuer une migration d'une base de données source Oracle vers l'une des cibles répertoriées ci-dessus. À l'aide d'AWS SCT, vous pouvez exporter les définitions d'objets de base de données source, telles que le schéma, les vues, les procédures stockées et les fonctions. 

  Vous pouvez utiliser AWS SCT pour convertir des données d'Oracle vers Amazon RDS for PostgreSQL ou Amazon Aurora PostgreSQL Compatible Edition. 

  Dans ce modèle, vous utilisez AWS SCT pour convertir et migrer le code Oracle vers PostgreSQL à l'aide des `aws_oracle_ext` extensions `orafce` et pour migrer manuellement les codes `psql` d'extension vers du code intégré par défaut ou natif.
+ Le pack d'extension [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html) est un module complémentaire qui émule les fonctions présentes dans la base de données source qui sont requises lors de la conversion d'objets vers la base de données cible. Avant de pouvoir installer le pack d'extension AWS SCT, vous devez convertir le schéma de votre base de données.

  Lorsque vous convertissez votre schéma de base de données ou d'entrepôt de données, AWS SCT ajoute un schéma supplémentaire à votre base de données cible. Ce schéma met en œuvre les fonctions système SQL de la base de données source nécessaires lors de l'écriture du schéma converti dans la base de données cible. Ce schéma supplémentaire est appelé schéma du kit d'extension.

  Le schéma du pack d'extension pour les bases de données OLTP est nommé en fonction de la base de données source. Pour les bases de données Oracle, le schéma du pack d'extension est`AWS_ORACLE_EXT`.

*Autres outils*
+ [Oracle](https://github.com/orafce/orafce) — Oracle est un module qui implémente des fonctions, des types de données et des packages compatibles avec Oracle. Il s'agit d'un outil open source avec une licence Berkeley Source Distribution (BSD) afin que tout le monde puisse l'utiliser. Le `orafce` module est utile pour migrer d'Oracle vers PostgreSQL car de nombreuses fonctions Oracle sont implémentées dans PostgreSQL.

 

**Code**

Pour obtenir une liste de tous les codes couramment utilisés et migrés d'Oracle vers PostgreSQL afin d'éviter l'utilisation du code d'extension AWS SCT, consultez le document ci-joint.

## Épopées
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-epics"></a>

### Configuration de la base de données source Amazon RDS for Oracle
<a name="configure-the-amazon-rds-for-oracle-source-database"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez l'instance de base de données Oracle. | Créez une instance de base de données compatible avec Amazon RDS for Oracle ou Aurora PostgreSQL à partir de la console Amazon RDS. | AWS, DBA en général | 
| Configurez les groupes de sécurité. | Configurez les groupes de sécurité entrants et sortants. | AWS général | 
| Créez la base de données. | Créez la base de données Oracle avec les utilisateurs et les schémas nécessaires. | AWS, DBA en général | 
| Créez les objets. | Créez des objets et insérez des données dans le schéma. | DBA | 

### Configuration de la base de données cible Amazon RDS for PostgreSQL
<a name="configure-the-amazon-rds-for-postgresql-target-database"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez l'instance de base de données PostgreSQL. | Créez une instance de base de données Amazon RDS for PostgreSQL ou Amazon Aurora PostgreSQL à partir de la console Amazon RDS. | AWS, DBA en général | 
| Configurez les groupes de sécurité. | Configurez les groupes de sécurité entrants et sortants. | AWS général | 
| Créez la base de données. | Créez la base de données PostgreSQL avec les utilisateurs et les schémas nécessaires. | AWS, DBA en général | 
| Validez les extensions. | Assurez-vous qu'`aws_oracle_ext``orafce`ils sont correctement installés et configurés dans la base de données PostgreSQL. | DBA | 
| Vérifiez que la base de données PostgreSQL est disponible. | Assurez-vous que la base de données PostgreSQL est opérationnelle. | DBA | 

### Migrez le schéma Oracle vers PostgreSQL à l'aide d'AWS SCT et des extensions
<a name="migrate-the-oracle-schema-into-postgresql-using-aws-sct-and-the-extensions"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installer AWS SCT. | Installez la dernière version d'AWS SCT. | DBA | 
| Configurez AWS SCT. | Configurez AWS SCT avec les pilotes Java Database Connectivity (JDBC) pour Oracle () `ojdbc8.jar` et PostgreSQL (). `postgresql-42.2.5.jar` | DBA | 
| Activez le pack ou le modèle d'extension AWS SCT. | Dans les **paramètres du projet** AWS SCT, activez l'implémentation de fonctions intégrées avec les `orafce` extensions `aws_oracle_ext` et pour le schéma de base de données Oracle. | DBA | 
| Convertissez le schéma. | Dans AWS SCT, choisissez **Convert Schema** pour convertir le schéma d'Oracle en PostgreSQL et générer les fichiers .sql. | DBA | 

### Convertir le code d'extension AWS SCT en code psql
<a name="convert-aws-sct-extension-code-to-psql-code"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Convertissez le code manuellement. | Convertissez manuellement chaque ligne de code compatible avec les extensions en code intégré `psql` par défaut, comme indiqué dans le document ci-joint. Par exemple, modifier `AWS_ORACLE_EXT.SYSDATE()` ou `ORACLE.SYSDATE()` faire`NOW()`. | DBA | 
| Validez le code | (Facultatif) Validez chaque ligne de code en l'exécutant temporairement dans la base de données PostgreSQL. | DBA | 
| Créez des objets dans la base de données PostgreSQL. | Pour créer des objets dans la base de données PostgreSQL, exécutez les fichiers .sql générés par AWS SCT et modifiés au cours des deux étapes précédentes. | DBA | 

## Ressources connexes
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-resources"></a>
+ Base de données
  + [Oracle sur Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)
  + [PostgreSQL sur Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)
  + [Utilisation d'Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)
  + [Plan PostgreSQL EXPLAIN](https://www.postgresql.org/docs/current/sql-explain.html)
+ AWS SCT
  + [Présentation de l'outil AWS Schema Conversion Tool](https://aws.amazon.com/dms/schema-conversion-tool/)
  + [Guide de l'utilisateur d'AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
  + [Utilisation de l'interface utilisateur AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)
  + [Utilisation de la base de données Oracle comme source pour AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)
+ Extensions pour AWS SCT
  + [Utilisation du pack d'extension AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html)
  + [Fonctionnalité Oracle (en)](https://postgres.cz/wiki/Oracle_functionality_(en))
  + [PGXN ou](https://pgxn.org/dist/orafce/)
  + [GitHub orafce](https://github.com/orafce/orafce)

## Informations supplémentaires
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-additional"></a>

Pour plus d'informations, suivez les commandes détaillées, avec syntaxe et exemples, pour convertir manuellement le code dans le document joint.

## Pièces jointes
<a name="attachments-158847bb-27ef-4915-a9ca-7d87073792c1"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/158847bb-27ef-4915-a9ca-7d87073792c1/attachments/attachment.zip)