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

Lecture de 11 minute(s)
0

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

Brève description

Il existe plusieurs méthodes pour effectuer une exportation ou une importation dans une instance de base de données Amazon RDS for Oracle.

Après avoir configuré l'environnement, vous pouvez :

  • Importez des tableaux depuis une instance Oracle RDS source vers une instance Oracle RDS cible.
  • Exportez des données à partir d’une instance Oracle RDS et créez un fichier de vidage localement sur une instance Amazon Elastic Compute Cloud (EC2) ou un hôte distant.
  • Exportez des données à partir d’une instance Oracle RDS et stockez le fichier de vidage sur l'hôte RDS.
  • Importez un fichier de sauvegarde situé sur un hôte RDS.
  • Transférez des fichiers de vidage entre votre instance RDS for Oracle DB et un compartiment Amazon Simple Storage Service (Amazon S3) à l'aide de l'option d'intégration S3.

Solution

Pour offrir une expérience de service géré, l'accès au niveau de l'hôte pour se servir des utilitaires impdp et expdp sur l'hôte RDS n'est pas autorisé. Une autre option consiste à utiliser l'API Data Pump (DBMS_DATAPUMP) pour procéder aux importations ou aux exportations. Cela dit, vous pouvez effectuer cette tâche à l'aide des utilitaires Data Pump sur un hôte distant.

Oracle Instant Client est un client léger que vous pouvez installer sur votre ordinateur ou sur une instance Amazon EC2. Oracle Instant Client inclut les utilitaires impdp et expdp que vous pouvez utiliser pour effectuer les opérations d'exportation et d'importation à partir de la ligne de commande.

Conditions préalables

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

  • Référez-vous à l’ID de document 553337.1 pour vérifier si le binaire que vous téléchargez est compatible avec les versions source et cible. L’exportation à partir d'un client avec une version égale ou ultérieure est généralement prise en charge. L'importation à l'aide d’une 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 19c, vous pouvez installer la version 19c d'Oracle Instant Client la plus récente.
  • Pour utiliser Data Pump, installez le package Tools par-dessus le package Basic. Pour installer les packages, consultez la documentation Oracle Instant Client.
  • Veillez à ce que la version Daylight Saving Time (DST, heure d’été) de l'instance RDS cible soit égale ou ultérieure à celle de l'instance source. Dans le cas contraire, l'erreur suivante s'affiche lors de l'importation : ORA-39405. 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 dans une instance Oracle RDS, utilisez l'option TIMEZONE_FILE_AUTOUPGRADE.
SELECT * FROM V$TIMEZONE_FILE;

Pour tester l'importation ou l'exportation Data Pump à partir d’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), le package Tools (RPM) et le package SQL*Plus (RPM). Dans cet article, les RPM suivants sont les derniers téléchargements disponibles :

  • oracle-instantclient19.16-basic-19.16.0.0.0-1.x86_64.rpm
  • oracle-instantclient19.16-tools-19.16.0.0.0-1.x86_64.rpm
  • oracle-instantclient19.16-sqlplus-19.16.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 à l’aide 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.16, l'emplacement binaire par défaut pour l'installation est alors /usr/lib/oracle/19.16/client64.

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

Exemple :

sudo yum install oracle-instantclient19.16-sqlplus-19.16.0.0.0-1.x86_64.rpm

6.    Définissez ou mettez à jour les variables environnementales suivantes, comme indiqué dans cet exemple :

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

7.    Créez vos fichiers de configuration, tels que tnsnames.ora et sqlnet.ora, à l'emplacement suivant : /usr/lib/oracle/ example-client-version /client64/lib/network/admin. Dans cet exemple, l'emplacement sera : /usr/lib/oracle/19.16/client64/lib/network/admin.

Configuration de l'environnement

1.    Ajoutez les entrées TNS requises pour l'importation ou l’exportation Data Pump dans le fichier tnsnames.ora.

Exemple d'entrée dans le fichier tnsnames.ora :

target = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) 
   (HOST = xxxx.rxrxrmwt1x471wi.eu-central-1.rds.amazonaws.com) (PORT = 1521)))(CONNECT_DATA = (SID = orcl)))

Pour plus d'informations, voir Configuration de SQL*Plus pour utiliser SSL avec une instance de base de données Oracle.

  1. 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.

  2. 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;

Importer des tableaux à partir d’une instance Oracle RDS source vers une instance Oracle RDS cible

Pour importer les tableaux d'une instance Oracle RDS source vers une instance Oracle RDS cible, procédez comme suit :

1.    Exécutez une requête similaire à l'exemple ci-dessous pour créer un lien de base de données entre les bases de données source et cible. Ceci est utilisé 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)))';

Le lien de base de données connectant l'instance cible à l'instance source possède des règles entrantes qui permettent les connexions de l'instance cible.

2.    Remplissez les conditions préalables et la configuration décrites dans cet article avant d'exécuter la commande impdp.

3.    Connectez-vous à l'instance EC2 qui contient le client instantané Oracle.

4.    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

Exemple de sortie :

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

Exportez des données à partir d’une instance Oracle RDS et créez un fichier de vidage localement sur un hôte distant

Pour exporter les données à partir d’une instance Oracle RDS et créer un fichier de vidage localement, procédez comme suit :

  • Installez une base de données Oracle sur une instance EC2 ou un hôte distant. Dans l'exemple suivant, Oracle XE est installé sur une instance Windows EC2. Pour plus d'informations sur Oracle XE, consultez Oracle Database XE Quick Start.
  • Mettez à jour les règles de trafic entrant pour le groupe de sécurité des instances RDS source et cible afin de permettre les connexions à partir de l'instance EC2.

1.    Connectez-vous à la base de données XE avec un client Oracle, tel que SQL*Plus. Créez ensuite un répertoire dans la base de données Oracle XE. Ce répertoire fera référence au répertoire dans lequel vous souhaitez créer le fichier de vidage sur l'instance EC2. Exécutez une requête similaire à la suivante :

create directory exp_dir as 'C:\TEMP\';

2.    Sur la base de données XE, créez un lien de base de données vers votre base de données RDS source à l'aide d'une commande similaire à cet exemple :

CREATE DATABASE LINK exp_rds CONNECT TO admin identified by example_password USING '(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = example-hostname)(PORT=example-port)))(CONNECT_DATA =(SERVICE_NAME = example-service-name)))';

3.    Testez le lien de base de données de la manière suivante :

select sysdate from dual@exp_rds;

4.    Pour créer le fichier de vidage sur l'instance EC2, exécutez une commande similaire à la suivante :

expdp system network_link=exp_rds directory=exp_dir dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3

Exemple de sortie :

Connected to: Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production Warning: Oracle Data Pump operations are not typically needed when connected to the root or seed of a container database. Starting "SYSTEM"."SYS_EXPORT_TABLE_01": system/********
    network_link=exp_rds directory=exp_dir dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3 Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
    Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Processing object type TABLE_EXPORT/TABLE/TABLE . . exported "ADMIN"."TEST2" 2.713 MB  23814 rows. . exported "ADMIN"."TEST1"  677.1 KB  1814 rows. . exported "ADMIN"."TEST3"  15.98 KB  5 rows Master table "SYSTEM"."SYS_EXPORT_TABLE_01"
    successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_TABLE_01 is:   C:\TEMP\TABLE_DUMP.DMP
Job "SYSTEM"."SYS_EXPORT_TABLE_01" successfully completed at Wed Aug 24 18:15:25 2022 elapsed 0 00:00:18

Exportez des données à partir d’une instance Oracle RDS et stockez le fichier de vidage sur l'hôte RDS

Pour exporter des données à partir d’une instance Oracle RDS et stocker le fichier de vidage sur l'hôte RDS, procédez comme suit :

1.    Remplissez les conditions préalables et la configuration décrites dans cet article avant d'exécuter la commande expdp.

2.    Connectez-vous à l'instance EC2 qui contient le client instantané Oracle.

3.    Créez un fichier de vidage sur l'instance RDS en exécutant une commande similaire à la suivante :

expdp admin@target dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3

Exemple de sortie :

Export: Release 19.0.0.0.0 - Production on Wed Aug 24 16:18:58 2022
Version 19.16.0.0.0
Copyright (c) 1982, 2022, Oracle and/or its affiliates.  All rights reserved.
Password:
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "ADMIN"."SYS_EXPORT_TABLE_01":  admin/********@target dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "ADMIN"."TEST2"                             2.713 MB   23814 rows
. . exported "ADMIN"."TEST1"                             677.1 KB    1814 rows
. . exported "ADMIN"."TEST3"                             15.98 KB       5 rows
Master table "ADMIN"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for ADMIN.SYS_EXPORT_TABLE_01 is:
  /rdsdbdata/datapump/table_dump.dmp
Job "ADMIN"."SYS_EXPORT_TABLE_01" successfully completed at Wed Aug 24 16:19:20 2022 elapsed 0 00:00:15

Importer un fichier de sauvegarde situé sur l'hôte RDS

Pour importer un fichier de vidage stocké sur l'hôte RDS, procédez comme suit :

Remarque : Dans cet exemple, les données existent dans le DATA_PUMP_DIR sur l'hôte RDS.

1.    Remplissez les conditions préalables et la configuration décrites dans cet article avant d'exécuter la commande impdp.

2.    Connectez-vous à l'instance EC2 qui contient le client instantané.

3.    Exécutez une commande similaire à la suivante sur l'instance EC2 pour importer le fichier de vidage situé sur l'hôte RDS.

Remarque : Dans cet exemple, les tableaux sont tronquées avant l'importation des données.

impdp admin@target directory=DATA_PUMP_DIR dumpfile=table_dump.dmp logfile=impdp_table_dump.log tables=admin.test1,admin.test2,admin.test3 table_exists_action=truncate

Exemple de sortie :

import: Release 19.0.0.0.0 - Production on Thu Sep 8 13:24:44 2022
Version 19.16.0.0.0
Copyright (c) 1982, 2022, Oracle and/or its affiliates.  All rights reserved.
Password:
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Master table "ADMIN"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "ADMIN"."SYS_IMPORT_TABLE_01":  admin/********@target directory=DATA_PUMP_DIR dumpfile=table_dump.dmp logfile=impdp_table_dump.log tables=admin.test1,admin.test2,admin.test3 table_exists_action=truncate
Processing object type TABLE_EXPORT/TABLE/TABLE
Table "ADMIN"."TEST2" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate
Table "ADMIN"."TEST3" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate
Table "ADMIN"."TEST1" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "ADMIN"."TEST2"                             2.749 MB   24059 rows
. . imported "ADMIN"."TEST1"                             677.2 KB    1814 rows
. . imported "ADMIN"."TEST3"                             15.98 KB       5 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 Thu Sep 8 13:24:54 2022 elapsed 0 00:00:06

Transfert de fichiers de sauvegarde entre votre instance de base de données RDS for Oracle et un compartiment Amazon S3

Pour transférer des fichiers de vidage entre une instance de base de données Oracle RDS et un compartiment Amazon S3, vous pouvez utiliser l'option d'intégration S3. Pour plus d'informations, consultez Transfert de fichiers entre Amazon RDS for Oracle et un compartiment Amazon S3.


Informations connexes

Présentation d'Oracle Data Pump

DBMS_DATAPUMP

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans