Importation à l'aide d'Oracle Data Pump - Amazon Relational Database Service

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.

Importation à l'aide d'Oracle Data Pump

Oracle Data Pump est un utilitaire qui vous permet d'exporter des données Oracle vers un fichier de vidage et de les importer dans une autre base de données Oracle. Il s'agit d'un remplacement à long terme des utilitaires d'importation/importation d'Oracle. Oracle Data Pump est la méthode recommandée pour déplacer de grandes quantités de données d'une base de données Oracle vers une RDS instance de base de données Amazon.

Les exemples de cette section montrent une façon d'importer des données dans une base de données Oracle, mais Oracle Data Pump prend en charge d'autres techniques. Pour plus d'informations, consultez la documentation Oracle Database.

Les exemples de cette section utilisent le package DBMS_DATAPUMP. Vous pouvez accomplir les mêmes tâches en utilisant les utilitaires de ligne de commande Oracle Data Pump impdp et expdp. Vous pouvez installer ces utilitaires sur un hôte distant dans le cadre d'une installation de client Oracle, y compris Oracle Instant Client. Pour plus d'informations, consultez Comment utiliser Oracle Instant Client pour exécuter Data Pump Import ou Export pour mon instance de base de données Amazon RDS pour Oracle ?

Présentation d'Oracle Data Pump

Oracle Data Pump est constitué des composants suivants :

  • Clients de la ligne de commande expdp et impdp

  • Le DBMS_DATAPUMP package PL/ SQL

  • Le DBMS_METADATA package PL/ SQL

Vous pouvez utiliser Oracle Data Pump dans les scénarios suivants :

  • Importez des données d'une base de données Oracle, sur site ou sur une EC2 instance Amazon, vers une instance de base de données RDS pour Oracle.

  • Importez des données d'une instance de base de données RDS pour Oracle vers une base de données Oracle, sur site ou sur une EC2 instance Amazon.

  • Importez des données entre deux RDS instances de base de données Oracle, par exemple, pour migrer des données de EC2 -Classic versVPC.

Pour télécharger les utilitaires Oracle Data Pump, veuillez consulter Oracle Database Software Downloads sur le site web Oracle Technology Network. Pour en savoir plus sur la compatibilité lors de la migration entre les versions d'Oracle Database, veuillez consulter la documentation Oracle Database.

Flux de travail Oracle Data Pump

En général, vous utilisez Oracle Data Pump pour les opérations suivantes :

  1. Exportez vos données dans un fichier de vidage sur la base de données source.

  2. Téléchargez votre fichier de vidage vers votre destination RDS pour l'instance de base de données Oracle. Vous pouvez effectuer le transfert à l'aide d'un compartiment Amazon S3 ou en utilisant un lien de base de données entre les deux bases de données.

  3. Importez les données de votre fichier de vidage dans votre instance de base de données RDS pour Oracle.

Bonnes pratiques d'Oracle Data Pump

Lorsque vous utilisez Oracle Data Pump pour importer des données dans une RDS instance Oracle, nous vous recommandons de suivre les meilleures pratiques suivantes :

  • Effectuez les importations en mode schema ou table pour importer des schémas et des objets spécifiques.

  • Limitez les schémas que vous importez à ceux requis par votre application.

  • N’importez pas en mode full ou importez des schémas pour les composants maintenus par le système.

    Étant donné qu'RDSOracle n'autorise pas l'accès aux utilisateurs SYSDBA administratifs SYS ou aux utilisateurs administratifs, ces actions peuvent endommager le dictionnaire de données Oracle et affecter la stabilité de votre base de données.

  • Lorsque vous chargez de grandes quantités de données, procédez comme suit :

    1. Transférez le fichier de vidage vers la cible RDS pour l'instance de base de données Oracle.

    2. Prenez un instantané de base de données de votre instance.

    3. Testez l'importation pour en vérifier le bon fonctionnement.

    Si les composants de la base de données sont invalidés, vous pouvez supprimer l'instance de base de données et la recréer à partir de l'instantané de base de données. L'instance de base de données restaurée inclut les fichiers de vidage intermédiaires sur l'instance de base de données lorsque vous avez pris l'instantané de base de données.

  • N'importez pas de fichiers de vidage qui ont été créés à l'aide des paramètres d'exportation d'Oracle Data Pump TRANSPORT_TABLESPACES, TRANSPORTABLE ou TRANSPORT_FULL_CHECK. RDSpour les instances de base de données Oracle, l'importation de ces fichiers de vidage n'est pas prise en charge.

  • N'importez pas de fichiers de vidage contenant des objets Oracle Scheduler dans SYS, SYSTEM, RDSADMIN, RDSSEC, et RDS_DATAGUARD et appartenant aux catégories suivantes :

    • Tâches

    • Programmes

    • Schedules

    • Chaînes

    • Règles

    • Contextes d'évaluation

    • Ensemble de règles

    RDSpour les instances de base de données Oracle, l'importation de ces fichiers de vidage n'est pas prise en charge.

  • Pour exclure les objets Oracle Scheduler non pris en charge, utilisez des directives supplémentaires lors de l'exportation Data Pump. Si vous utilisez DBMS_DATAPUMP, vous pouvez ajouter un METADATA_FILTER supplémentaire avant le DBMS_METADATA.START_JOB :

    DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM SYS.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' );

    Si vous utilisez expdp, créez un fichier de paramètres contenant la directive exclude indiquée dans l'exemple suivant. Ensuite, utilisez PARFILE=parameter_file avec votre commande expdp.

    exclude=procobj:"IN (SELECT NAME FROM sys.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) )"

Importation de données avec Oracle Data Pump et un compartiment Amazon S3

Le processus d'importation suivant utilise Oracle Data Pump et un compartiment Amazon S3. La procédure est la suivante :

  1. Exportez les données de la base de données source à l'aide DATAPUMP du package Oracle DBMS_.

  2. Placez le fichier de vidage dans un compartiment Amazon S3.

  3. Téléchargez le fichier dump depuis le compartiment Amazon S3 vers le DATA_PUMP_DIR répertoire de la cible RDS pour l'instance de base de données Oracle.

  4. Importez les données du fichier de vidage copié dans l'instance de base de données RDS for Oracle à l'aide du packageDBMS_DATAPUMP.

Conditions requises pour importer des données avec Oracle Data Pump et un compartiment Amazon S3

Le processus est soumis aux exigences suivantes :

  • Assurez-vous qu'un compartiment Amazon S3 est disponible pour les transferts de fichiers et que le compartiment Amazon S3 se trouve dans le même emplacement Région AWS que l'instance de base de données. Pour plus d'informations, veuillez consulter Créer un compartiment dans le Guide de démarrage d'Amazon Simple Storage Service.

  • L'objet que vous téléchargez dans le compartiment Amazon S3 doit être d'une taille inférieure ou égale à 5 To. Pour plus d'informations sur l'utilisation des objets dans Amazon S3, consultez le Guide de l'utilisateur Amazon Simple Storage Service.

    Note

    Si le fichier de vidage dépasse 5 To, vous pouvez exécuter l'exportation Oracle Data Pump avec l'option parallèle. Cette opération répartit les données dans plusieurs fichiers de vidage de sorte que la taille de chaque fichier ne dépasse pas la limite de 5 To.

  • Vous devez préparer le compartiment Amazon S3 pour RDS l'intégration à Amazon en suivant les instructions figurant dansConfiguration IAM des autorisations RDS pour l'intégration d'Oracle à Amazon S3.

  • Vous devez veiller à disposer de suffisamment d'espace de stockage pour stocker le fichier de vidage sur l'instance source et l'instance de base de données cible.

Note

Ce processus importe un fichier de vidage dans le répertoire DATA_PUMP_DIR, qui est préconfiguré sur toutes les instances de bases de données Oracle. Ce répertoire est situé sur le même volume de stockage que vos fichiers de données. Lorsque vous importez le fichier de vidage, les fichiers de données Oracle existants utilisent davantage d'espace. Vous devez donc veiller à ce que votre instance de base de données puisse répondre aux besoins de cette utilisation d'espace supplémentaire. Le fichier de vidage importé n'est pas automatiquement supprimé ou purgé du répertoire DATA_PUMP_DIR. Pour supprimer le fichier de vidage importé, utilisez UTL_FILE. FREMOVE, disponible sur le site Web d'Oracle.

Étape 1 : accorder des privilèges à l'utilisateur de base de données sur l'instance de base de données cible RDS pour Oracle

Dans cette étape, vous créez les schémas dans lesquels vous prévoyez d'importer des données et vous accordez aux utilisateurs les privilèges nécessaires.

Pour créer des utilisateurs et accorder les privilèges nécessaires sur l'instance cible RDS for Oracle
  1. Utilisez SQL *Plus ou Oracle SQL Developer pour vous connecter en tant qu'utilisateur principal à l'RDSinstance de base de données Oracle dans laquelle les données seront importées. Pour en savoir plus sur la connexion à une instance de base de données, consultez Connexion à votre instance de base de données RDS for Oracle.

  2. Créez les espaces de table requis avant d'importer les données. Pour de plus amples informations, veuillez consulter Création et dimensionnement des espaces de table.

  3. Créez le compte utilisateur et accordez les autorisations et les rôles nécessaires si le compte utilisateur dans lequel les données sont importées n'existe pas. Si vous importez des données avec plusieurs schémas d'utilisateur, créez chaque compte d'utilisateur et accordez-lui les privilèges et rôles nécessaires.

    Par exemple, les SQL instructions suivantes créent un nouvel utilisateur et accordent les autorisations et les rôles nécessaires pour importer les données dans le schéma appartenant à cet utilisateur. Remplacez schema_1 par le nom de votre schéma dans cette étape et dans les étapes suivantes.

    CREATE USER schema_1 IDENTIFIED BY my_password; GRANT CREATE SESSION, RESOURCE TO schema_1; ALTER USER schema_1 QUOTA 100M ON users;
    Note

    Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.

    Les instructions précédentes accordent au nouvel utilisateur le privilège CREATE SESSION et le rôle RESOURCE. Vous pouvez avoir besoin de privilèges et de rôles supplémentaires en fonction des objets de la base de données que vous importez.

Étape 2 : Exporter les données dans un fichier de vidage à l'aide de DBMS _ DATAPUMP

Pour créer un fichier de vidage, utilisez le package DBMS_DATAPUMP.

Pour exporter des données Oracle dans un fichier de vidage
  1. Utilisez SQL Plus ou Oracle SQL Developer pour vous connecter à la source RDS de l'instance de base de données Oracle avec un utilisateur administratif. Si la base de données source est une instance RDS de base de données Oracle, connectez-vous à l'utilisateur RDS principal Amazon.

  2. Exportez les données en appelant des procédures DBMS_DATAPUMP.

    Le script suivant exporte le schéma SCHEMA_1 dans un fichier de vidage nommé sample.dmp dans le répertoire DATA_PUMP_DIR. Remplacez SCHEMA_1 par le nom du schéma que vous souhaitez exporter.

    DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'SCHEMA', job_name => null ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl , filename => 'sample.dmp' , directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_exp.log', directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_log_file ); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')'); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM SYS.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' ); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
    Note

    Data Pump lance les tâches de manière asynchrone. Pour obtenir des informations sur la surveillance d'une tâche Data Pump, veuillez consulter Monitoring Job Status dans la documentation Oracle.

  3. (Facultatif) Visualisez le contenu du journal d'exportation en appelant la procédure rdsadmin.rds_file_util.read_text_file. Pour de plus amples informations, veuillez consulter Lecture de fichiers dans un répertoire d'instance de base de données.

Étape 3 : Charger le fichier de vidage dans votre compartiment Amazon S3

Utilisez la RDS procédure Amazon rdsadmin.rdsadmin_s3_tasks.upload_to_s3 pour copier le fichier de vidage dans le compartiment Amazon S3. L'exemple suivant charge tous les fichiers du répertoire DATA_PUMP_DIR dans le compartiment Amazon S3 nommé amzn-s3-demo-bucket.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

L'instruction SELECT renvoie l'ID de la tâche dans un type de données VARCHAR2. Pour de plus amples informations, veuillez consulter Téléchargement de fichiers depuis votre instance de base de données RDS pour Oracle vers un compartiment Amazon S3.

Étape 4 : téléchargez le fichier de vidage depuis votre compartiment Amazon S3 vers votre instance de base de données cible.

Effectuez cette étape à l'aide de la RDS procédure Amazonrdsadmin.rdsadmin_s3_tasks.download_from_s3. Lorsque vous téléchargez un fichier dans un répertoire, la procédure download_from_s3 ignore le téléchargement si un fichier de même nom existe déjà dans le répertoire. Pour supprimer un fichier du répertoire de téléchargement, utilisez UTL_FILE. FREMOVE, disponible sur le site Web d'Oracle.

Pour télécharger votre fichier de vidage
  1. Démarrez SQL *Plus ou Oracle SQL Developer et connectez-vous en tant que maître sur votre instance de base de données Oracle RDS cible Amazon

  2. Téléchargez le fichier dump en suivant la RDS procédure Amazonrdsadmin.rdsadmin_s3_tasks.download_from_s3.

    L'exemple suivant télécharge tous les fichiers d'un compartiment Amazon S3 nommé amzn-s3-demo-bucket dans le répertoire DATA_PUMP_DIR.

    SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

    L'instruction SELECT renvoie l'ID de la tâche dans un type de données VARCHAR2. Pour de plus amples informations, veuillez consulter Téléchargement des fichiers d'un compartiment Amazon S3 vers une instance de base de données Oracle.

Étape 5 : Importez votre fichier de vidage dans votre instance de base de données cible à l'aide de DBMS _ DATAPUMP

DBMS_DATAPUMPÀ utiliser pour importer le schéma dans votre instance de base de données RDS pour Oracle. Des options supplémentaires telles que METADATA_REMAP peuvent être nécessaires.

Pour importer des données dans votre instance de base de données cible
  1. Démarrez SQL *Plus ou SQL Developer et connectez-vous en tant qu'utilisateur principal à votre instance de base de données RDS pour Oracle.

  2. Importez les données en appelant DBMS_DATAPUMP des procédures.

    L'exemple suivant importe le SCHEMA_1 données provenant de sample_copied.dmp votre instance de base de données cible.

    DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_copied.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_imp.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
    Note

    Les tâches de vidage de données sont démarrées de façon asynchrone. Pour obtenir des informations sur la surveillance d'une tâche Data Pump, veuillez consulter Monitoring Job Status dans la documentation Oracle. Vous pouvez afficher le contenu du journal d'importation à l'aide de la procédure rdsadmin.rds_file_util.read_text_file. Pour de plus amples informations, veuillez consulter Lecture de fichiers dans un répertoire d'instance de base de données.

  3. Vérifiez l'importation des données en listant les tables de schéma sur votre instance de base de données cible.

    Par exemple, la requête suivante renvoie le nombre de tables de SCHEMA_1.

    SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1';

Étape 6 : nettoyer

Après l'importation des données, vous pouvez supprimer les fichiers que vous ne souhaitez plus conserver.

Pour supprimer les fichiers inutiles
  1. Démarrez SQL *Plus ou SQL Developer et connectez-vous en tant qu'utilisateur principal à votre instance de base de données RDS pour Oracle.

  2. Listez les fichiers dans DATA_PUMP_DIR en utilisant la commande suivante.

    SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
  3. Supprimez des fichiers dont vous n'avez plus besoin dans DATA_PUMP_DIR, utilisez la commande suivante :

    EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','filename');

    Par exemple, la commande suivante supprime le fichier appelé sample_copied.dmp.

    EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp');

Le processus d'importation suivant utilise Oracle Data Pump et le TRANSFER package Oracle DBMSFILE_ _. La procédure est la suivante :

  1. Connectez-vous à une base de données Oracle source, qui peut être une base de données sur site, une EC2 instance Amazon ou une instance de base RDS de données Oracle.

  2. Exportez les données à l'aide DATAPUMP du package DBMS_.

  3. DBMS_FILE_TRANSFER.PUT_FILEÀ utiliser pour copier le fichier de vidage de la base de données Oracle vers le DATA_PUMP_DIR répertoire de la cible RDS pour l'instance de base de données Oracle connectée à l'aide d'un lien de base de données.

  4. Importez les données du fichier de vidage copié dans l'instance de base de données RDS for Oracle à l'aide DBMS_DATAPUMP du package.

Le processus d'importation utilisant Oracle Data Pump et le package DBMS_FILE_TRANSFER comporte les étapes suivantes :

Conditions requises pour importer des données avec Oracle Data Pump et un lien vers une base de données

Le processus est soumis aux exigences suivantes :

  • Vous devez disposer des privilèges d'exécution sur les packages DBMS_FILE_TRANSFER et DBMS_DATAPUMP.

  • Vous devez disposer de privilèges d'écriture sur le répertoire DATA_PUMP_DIR de l'instance de base de données source.

  • Vous devez veiller à disposer de suffisamment d'espace de stockage pour stocker le fichier de vidage sur l'instance source et l'instance de base de données cible.

Note

Ce processus importe un fichier de vidage dans le répertoire DATA_PUMP_DIR, qui est préconfiguré sur toutes les instances de bases de données Oracle. Ce répertoire est situé sur le même volume de stockage que vos fichiers de données. Lorsque vous importez le fichier de vidage, les fichiers de données Oracle existants utilisent davantage d'espace. Vous devez donc veiller à ce que votre instance de base de données puisse répondre aux besoins de cette utilisation d'espace supplémentaire. Le fichier de vidage importé n'est pas automatiquement supprimé ou purgé du répertoire DATA_PUMP_DIR. Pour supprimer le fichier de vidage importé, utilisez UTL_FILE. FREMOVE, disponible sur le site Web d'Oracle.

Étape 1 : accorder des privilèges à l'utilisateur sur l'instance de base de données cible RDS pour Oracle

Pour accorder des privilèges à l'utilisateur sur l'instance de base de données cible RDS pour Oracle, procédez comme suit :

  1. Utilisez SQL Plus ou Oracle SQL Developer RDS pour vous connecter à l'instance de base de données Oracle dans laquelle vous souhaitez importer les données. Connect en tant qu'utilisateur RDS principal d'Amazon. Pour plus d'informations sur la connexion à votre instance de base de données, consultez Connexion à votre instance de base de données RDS for Oracle.

  2. Créez les espaces de table requis avant d'importer les données. Pour plus d'informations, consultez Création et dimensionnement des espaces de table.

  3. Si le compte d'utilisateur dans lequel les données seront importées n'existe pas, créez-en un et accordez-lui les autorisations et rôles nécessaires. Si vous importez des données avec plusieurs schémas d'utilisateur, créez chaque compte d'utilisateur et accordez-lui les privilèges et rôles nécessaires.

    Par exemple, les commandes suivantes créent un nouvel utilisateur nommé schema_1 et accordez les autorisations et les rôles nécessaires pour importer les données dans le schéma pour cet utilisateur.

    CREATE USER schema_1 IDENTIFIED BY my-password; GRANT CREATE SESSION, RESOURCE TO schema_1; ALTER USER schema_1 QUOTA 100M ON users;
    Note

    Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.

    L’exemple précédent montre comment accorder au nouvel utilisateur le privilège CREATE SESSION et le rôle RESOURCE. Des privilèges et rôles supplémentaires peuvent être requis en fonction des objets de la base de données que vous allez importer.

    Note

    Remplacez schema_1 par le nom de votre schéma dans cette étape et dans les étapes suivantes.

Étape 2 : Accorder des privilèges à l'utilisateur sur la base de données source

Utilisez SQL *Plus ou Oracle SQL Developer RDS pour vous connecter à l'instance de base de données Oracle contenant les données à importer. Le cas échéant, créez un compte utilisateur et accordez les autorisations nécessaires.

Note

Si la base de données source est une RDS instance Amazon, vous pouvez ignorer cette étape. Vous utilisez votre compte utilisateur RDS principal Amazon pour effectuer l'exportation.

Les commandes suivantes créent un nouvel utilisateur et accordent les autorisations nécessaires.

CREATE USER export_user IDENTIFIED BY my-password; GRANT CREATE SESSION, CREATE TABLE, CREATE DATABASE LINK TO export_user; ALTER USER export_user QUOTA 100M ON users; GRANT READ, WRITE ON DIRECTORY data_pump_dir TO export_user; GRANT SELECT_CATALOG_ROLE TO export_user; GRANT EXECUTE ON DBMS_DATAPUMP TO export_user; GRANT EXECUTE ON DBMS_FILE_TRANSFER TO export_user;
Note

Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.

Étape 3 : créer un fichier de vidage à l'aide de DBMS _ DATAPUMP

Pour créer un fichier de vidage, procédez comme suit :

  1. Utilisez SQL *Plus ou Oracle SQL Developer pour vous connecter à l'instance Oracle source avec un utilisateur administratif ou avec l'utilisateur que vous avez créé à l'étape 2. Si la base de données source est une instance de base de données Amazon RDS pour Oracle, connectez-vous à l'utilisateur RDS principal Amazon.

  2. Créez un fichier de vidage à l'aide de l'utilitaire Oracle Data Pump.

    Le script suivant crée un fichier de vidage appelé sample.dmp dans le répertoire DATA_PUMP_DIR.

    DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT' , job_mode => 'SCHEMA' , job_name => null ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample.dmp' , directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl , filename => 'sample_exp.log' , directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_log_file ); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl , 'SCHEMA_EXPR' , 'IN (''SCHEMA_1'')' ); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM sys.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' ); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
    Note

    Les tâches de vidage de données sont démarrées de façon asynchrone. Pour obtenir des informations sur la surveillance d'une tâche Data Pump, veuillez consulter Monitoring Job Status dans la documentation Oracle. Vous pouvez afficher le contenu du journal d'exportation à l'aide de la procédure rdsadmin.rds_file_util.read_text_file. Pour plus d'informations, consultez Lecture de fichiers dans un répertoire d'instance de base de données.

Étape 4 : créer un lien de base de données vers l'instance de base de données cible

Créez un lien de base de données entre votre instance de base de données source et votre instance de base de données cible. Notez que votre instance Oracle locale doit avoir une connectivité réseau à l'instance de base de données pour créer un lien de base de données et transférer votre fichier de vidage.

Exécutez cette étape en étant connecté au même compte d'utilisateur qu'à l'étape précédente.

Si vous créez un lien de base de données entre deux instances de base de données internes VPC ou homologuesVPCs, les deux instances de base de données doivent avoir une route valide entre elles. Le groupe de sécurité de chaque instance de base de données doit autoriser le trafic entrant dans l'autre instance de base de données et le trafic sortant de cette instance. Les règles entrantes et sortantes des groupes de sécurité peuvent faire référence à des groupes de sécurité provenant du même groupe VPC ou d'un groupe pair. VPC Pour de plus amples informations, veuillez consulter Ajustement des liens de base de données à utiliser avec des instances de base de données dans un VPC.

La commande suivante crée un lien de base de données nommé to_rds qui se connecte à l'utilisateur RDS principal Amazon sur l'instance de base de données cible.

CREATE DATABASE LINK to_rds CONNECT TO <master_user_account> IDENTIFIED BY <password> USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>) (PORT=<listener port>))(CONNECT_DATA=(SID=<remote SID>)))';

Étape 5 : Copiez le fichier de vidage exporté sur l'instance de base de données cible à l'aide de DBMS _ FILE _ TRANSFER

Utilisez DBMS_FILE_TRANSFER pour copier le fichier de vidage depuis l'instance de base de données source vers l'instance de base de données cible. Le script suivant copie un fichier de vidage appelé sample.dmp depuis l'instance source vers un lien de base de données cible appelé to_rds (créé dans l'étape précédente) :

BEGIN DBMS_FILE_TRANSFER.PUT_FILE( source_directory_object => 'DATA_PUMP_DIR', source_file_name => 'sample.dmp', destination_directory_object => 'DATA_PUMP_DIR', destination_file_name => 'sample_copied.dmp', destination_database => 'to_rds' ); END; /

Étape 6 : Importez le fichier de données dans l'instance de base de données cible à l'aide de DBMS _ DATAPUMP

Utilisez Oracle Data Pump pour importer le schéma dans l'instance de base de données. Des options supplémentaires telles que METADATA _ REMAP peuvent être nécessaires.

Connectez-vous à l'instance de base de données avec le compte utilisateur RDS principal Amazon pour effectuer l'importation.

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_copied.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_imp.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Note

Les tâches de vidage de données sont démarrées de façon asynchrone. Pour obtenir des informations sur la surveillance d'une tâche Data Pump, veuillez consulter Monitoring Job Status dans la documentation Oracle. Vous pouvez afficher le contenu du journal d'importation à l'aide de la procédure rdsadmin.rds_file_util.read_text_file. Pour plus d'informations, consultez Lecture de fichiers dans un répertoire d'instance de base de données.

Vous pouvez vérifier l'importation des données en consultant les table de l'utilisateur sur l'instance de base de données. Par exemple, la requête suivante renvoie le nombre de tables de schema_1.

SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1';

Étape 7 : nettoyer

Après l'importation des données, vous pouvez supprimer les fichiers que vous ne souhaitez plus conserver. Vous pouvez répertorier les fichiers de DATA_PUMP_DIR à l'aide de la commande suivante.

SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;

Pour supprimer des fichiers dont vous n'avez plus besoin dans DATA_PUMP_DIR, utilisez la commande suivante :

EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','<file name>');

Par exemple, la commande suivante supprime le fichier appelé "sample_copied.dmp".

EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp');