Comment utiliser Oracle Instant Client pour exécuter l'importation ou l'exportation Data Pump pour mon instance de bases de données Amazon RDS for Oracle ?

Dernière mise à jour : 10/11/2021

Je souhaite utiliser les clients impdp et expdp pour effectuer l'exportation et l'importation dans mon instance de bases de données Amazon Relational Database Service (Amazon RDS) for Oracle.

Solution

Étant donné qu'Amazon RDS for Oracle est une base de données gérée, vous n'avez pas accès à l'hôte pour utiliser les clients impdp ou expdp. Si vous utilisez l'API Data Pump pour effectuer des importations ou des exportations, vous avez besoin du package PL/SQL. Oracle Instant Client est un client léger qui peut être installé soit sur votre ordinateur, soit sur une instance Amazon Elastic Compute Cloud (Amazon EC2). Oracle Instant Client inclut les clients impdp et expdp qui peuvent être utilisés pour effectuer l'exportation et l'importation depuis la ligne de commande.

Avant d'utiliser Oracle Instant Client, procédez comme suit :

  • Vérifiez l'ID de document 553337.1 pour vérifier si le binaire que vous téléchargez prend en charge l'exportation des versions source et cible. En général, l'exportation à partir d'un client avec une version égale ou ultérieure est prise en charge. L'importation à l'aide de la version client identique à la version majeure cible d'Amazon RDS est prise en charge. Par exemple, si la version de l'instance source est 12.2 et que la version de l'instance cible est 18c, vous pouvez installer la version d'Oracle Instant 18c Client la plus récente.
  • Pour utiliser Data Pump, installez le package Tools par-dessus le package Basic. Pour installer les packages, consultez le document Oracle pour Oracle Instant Client.
  • Assurez-vous que la version Daylight Saving Time (DST, heure d’été) de l'instance RDS cible est égale ou ultérieure à celle de l'instance source. Sinon, l'erreur ORA-39405 s'affiche. Utilisez la requête suivante pour vérifier la version DST actuelle de votre instance. Pour mettre à jour la version DST vers la version la plus récente disponible, utilisez l'option TIMEZONE_FILE_AUTOUPGRADE.
SELECT * FROM V$TIMEZONE_FILE;

Pour tester l'importation ou l'exportation Data Pump via un lien de base de données à l'aide d'Oracle Instant Client, procédez comme suit :

1.    Créez une instance Amazon EC2 test à l'aide du système d'exploitation Amazon Linux 2.

2.    Téléchargez le package Basic (RPM) et le package Tools (RPM). Dans cet article, les téléchargements RPM suivants sont pris en compte :

        oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm

        oracle-instantclient19.8-tools-19.8.0.0.0-1.x86_64.rpm

3.    Transférez les binaires vers l'instance EC2. Pour plus d'informations, consultezTransférer des fichiers vers des instances Linux à l'aide d'un client SCP.

4.    Suivez les instructions du document Oracle pour Installer Oracle Instant Client sur Linux à partir de RPM.
Ce processus installe les binaires à l'emplacement par défaut /usr/lib/oracle/example-client-version/client64. Par exemple, si vous téléchargez les binaires de la version 19.8, l'emplacement binaire par défaut pour l'installation est alors /usr/lib/oracle/19.8/client64.

5.    Installez le package SQL*Plus Package (RPM) pour tester la connectivité entre l'instance EC2 et l'instance RDS.

6.    Définissez ou mettez à jour les variables d’environnement suivantes :

export PATH=$PATH:/usr/lib/oracle/19.8/client64/bin
export LD_LIBRARY_PATH=/usr/lib/oracle/19.8/client64/lib

7.    Créez un répertoire personnalisé pour stocker tnsnames.ora en exécutant une commande similaire à la suivante. Définissez la variable d’environnement TNS_ADMIN pour qu'elle pointe vers le répertoire.

mkdir -p /root/tnsentries

Assurez-vous que le fichier tnsnames.ora se trouve dans ce répertoire.

Exécutez la commande suivante pour vous assurer que la variable d'environnement TNS_ADMIN pointe vers le répertoire.

export TNS_ADMIN=/root/tnsentries

8.    Incluez les entrées TNS requises pour l'importation Data Pump dans le fichier tnsnames.ora.

9.    Mettez à jour les règles de trafic entrant pour le groupe de sécurité des instances RDS source et cible afin d'autoriser les connexions à partir de l'instance EC2.

10.    Créez des tables de test dans l'instance RDS source pour effectuer l'exportation en exécutant des requêtes similaires à ce qui suit :

CREATE TABLE TEST1 AS SELECT * FROM DBA_TABLES;
CREATE TABLE TEST2 AS SELECT * FROM DBA_OBJECTS;
CREATE TABLE TEST3 AS SELECT * FROM DBA_DATA_FILES;

11.    Exécutez une requête similaire à la suivante pour créer le lien de base de données entre les bases de données source et cible à utiliser avec le paramètre network_link :

CREATE DATABASE LINK sample_conn CONNECT TO example-username IDENTIFIED BY example-password USING '(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = example-hostname)(PORT = example-port)))(CONNECT_DATA =(SERVICE_NAME = example-service-name)))';

Étant donné que vous utilisez le lien de base de données pour vous connecter de l'instance cible à l'instance source, les règles de trafic entrant de la base de données source sont définies pour autoriser les connexions de l'instance cible.

12.    Pour importer des données de l'instance source vers l'instance cible, exécutez une commande similaire à la suivante :

impdp admin@target directory=data_pump_dir logfile=imp_test_tables_using_nw_link.log tables=admin.test1,admin.test2,admin.test3 network_link=sample_conn

Le résultat obtenu peut être similaire à ce qui suit :

Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "ADMIN"."SYS_IMPORT_TABLE_01":  admin/********@target directory=data_pump_dir logfile=imp_test_tables_using_nw_link.log tables=admin.test1,admin.test2,admin.test3 network_link=sample_conn
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 3.625 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . imported "ADMIN"."TEST2"                              20634 rows
. . imported "ADMIN"."TEST1"                               1537 rows
. . imported "ADMIN"."TEST3"                                  6 rows
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Job "ADMIN"."SYS_IMPORT_TABLE_01" successfully completed at Wed Oct 14 23:57:28 2020 elapsed 0 00:01:06

Document Oracle pour la présentation d'Oracle Data Pump

Document Oracle pour DBMS_DATAPUMP

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?