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 le moyen recommandé pour déplacer de grandes quantités de données d'une base de données Oracle vers une instance de base de données Amazon RDS.
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 obtenir plus d'informations, consultez la section How do I use Oracle Instant Client to run Data Pump Import or Export for my Amazon RDS for Oracle DB instance?
Rubriques
Présentation d'Oracle Data Pump
Oracle Data Pump est constitué des composants suivants :
-
Clients de la ligne de commande
expdp
etimpdp
-
Le package PL/SQL
DBMS_DATAPUMP
-
Le package PL/SQL
DBMS_METADATA
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 instance Amazon EC2 .
-
Importez des données entre des instances de base de données RDS pour Oracle, par exemple, pour migrer des données de EC2 -Classic vers VPC.
Pour télécharger les utilitaires Oracle Data Pump, veuillez consulter Oracle Database Software Downloads
Flux de travail Oracle Data Pump
En général, vous utilisez Oracle Data Pump pour les opérations suivantes :
-
Exportez vos données dans un fichier de vidage sur la base de données source.
-
Chargez votre fichier de vidage sur votre instance de base de données RDS for Oracle de destination. 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.
-
Importez les données de votre fichier de vidage dans votre instance de base de données RDS for Oracle.
Bonnes pratiques d'Oracle Data Pump
Lorsque vous utilisez Oracle Data Pump pour importer des données dans une instance RDS for Oracle, nous vous recommandons de suivre les bonnes pratiques suivantes :
-
Effectuez les importations en mode
schema
outable
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.Comme RDS for Oracle n'autorise pas l'accès aux utilisateurs administratifs
SYS
ouSYSDBA
, 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 :
-
Transférez le fichier de vidage vers l'instance de base de données RDS for Oracle cible.
-
Prenez un instantané de base de données de votre instance.
-
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
ouTRANSPORT_FULL_CHECK
. Les instances de base de données RDS for Oracle ne prennent pas en charge l'importation de ces fichiers de vidage. -
N'importez pas de fichiers de vidage contenant des objets Oracle Scheduler dans
SYS
,SYSTEM
,RDSADMIN
,RDSSEC
, etRDS_DATAGUARD
et appartenant aux catégories suivantes :-
Tâches
-
Programmes
-
Schedules
-
Chaînes
-
Règles
-
Contextes d'évaluation
-
Ensemble de règles
Les instances de base de données RDS for Oracle ne prennent pas en charge l'importation de ces fichiers de vidage.
-
-
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 unMETADATA_FILTER
supplémentaire avant leDBMS_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 directiveexclude
indiquée dans l'exemple suivant. Ensuite, utilisezPARFILE=
avec votre commandeparameter_file
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 :
-
Exportez les données de la base de données source à l'aide du package Oracle DBMS_DATAPUMP
. -
Placez le fichier de vidage dans un compartiment Amazon S3.
-
Téléchargez le fichier de vidage depuis le compartiment Amazon S3 vers le répertoire
DATA_PUMP_DIR
de l'instance de base de données RDS for Oracle cible. -
Importez les données du fichier de vidage copié dans l'instance de base de données RDS for Oracle à l'aide du package
DBMS_DATAPUMP
.
Rubriques
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 l'intégration Amazon RDS en suivant les instructions de Configuration des autorisations IAM pour l'intégration de RDS for 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
Étape 1 : accordez des privilèges à l'utilisateur de la base de données sur l'instance de base de données cible RDS for 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
-
Utilisez SQL*Plus ou Oracle SQL Developer pour vous connecter en tant qu'utilisateur principal à l'instance de la base de données RDS for 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 Oracle.
-
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.
-
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 instructions SQL suivantes créent un utilisateur et lui accordent les autorisations et rôles nécessaires pour importer les données dans le schéma de celui-ci : Remplacez
par le nom de votre schéma dans cette étape et dans les étapes suivantes.schema_1
CREATE USER
schema_1
IDENTIFIED BYmy_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ôleRESOURCE
. 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 en utilisant 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
-
Utilisez SQL Plus ou Oracle SQL Developer pour vous connecter à l'instance de base de données RDS for Oracle source avec un utilisateur administratif. Si la base de données source est une instance de base de données RDS for Oracle, connectez-vous avec l'utilisateur principal Amazon RDS.
-
Exportez les données en appelant des procédures
DBMS_DATAPUMP
.Le script suivant exporte le schéma
dans un fichier de vidage nomméSCHEMA_1
sample.dmp
dans le répertoireDATA_PUMP_DIR
. Remplacez
par le nom du schéma que vous souhaitez exporter.SCHEMA_1
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. -
(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 procédure Amazon RDS 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 en utilisant la procédure Amazon RDS rdsadmin.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
Pour télécharger votre fichier de vidage
-
Lancez SQL*Plus ou Oracle SQL Developer et connectez-vous en tant que maître sur votre instance de base de données Oracle cible Amazon RDS.
-
Téléchargez le fichier de vidage en utilisant la procédure Amazon RDS
rdsadmin.rdsadmin_s3_tasks.download_from_s3
.L'exemple suivant télécharge tous les fichiers d'un compartiment Amazon S3 nommé
dans le répertoireamzn-s3-demo-bucket
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éesVARCHAR2
. 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 en utilisant DBMS_DATAPUMP.
Utilisez DBMS_DATAPUMP
pour importer le schéma dans votre instance de base de données RDS for 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
-
Lancez SQL*Plus ou SQL Developer et connectez-vous en tant qu'utilisateur principal à votre instance de base de données RDS for Oracle.
-
Importez les données en appelant
DBMS_DATAPUMP
des procédures.L'exemple suivant importe les
SCHEMA_1
données depuis votresample_copied.dmp
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. -
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
-
Lancez SQL*Plus ou SQL Developer et connectez-vous en tant qu'utilisateur principal à votre instance de base de données RDS for Oracle.
-
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;
-
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');
Importation de données avec Oracle Data Pump et un lien de base de données
Le processus d'importation suivant utilise Oracle Data Pump et le package DBMS_FILE_TRANSFER
-
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 de données RDS pour Oracle.
-
Exportez des données à l'aide du package DBMS_DATAPUMP
. -
Utilisez
DBMS_FILE_TRANSFER.PUT_FILE
pour copier le fichier de vidage de la base de données Oracle dans le répertoireDATA_PUMP_DIR
de l'instance de base de données RDS for Oracle cible qui est connectée à l'aide d'un lien de base de données. -
Importez les données du fichier de vidage copié dans l'instance de base de données RDS for Oracle à l'aide du package
DBMS_DATAPUMP
.
Le processus d'importation utilisant Oracle Data Pump et le package DBMS_FILE_TRANSFER
comporte les étapes suivantes :
Rubriques
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
etDBMS_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
Étape 1 : accorder des privilèges à l'utilisateur sur l'instance de base de données cible de RDS for Oracle
Pour accorder des privilèges à l'utilisateur sur l'instance de base de données cible RDS for Oracle, procédez comme suit :
-
Utilisez SQL Plus ou Oracle SQL Developer pour vous connecter à l'instance de la base de données RDS for Oracle dans laquelle vous souhaitez importer les données. Connectez-vous à l'utilisateur principal Amazon RDS. Pour plus d'informations sur la connexion à votre instance de base de données, consultez Connexion à votre instance de base de données Oracle.
-
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.
-
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 accordent les autorisations et les rôles nécessaires pour importer les données dans le schéma de cet utilisateur.CREATE USER
schema_1
IDENTIFIED BYmy-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ôleRESOURCE
. 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
par le nom de votre schéma dans cette étape et dans les étapes suivantes.schema_1
Étape 2 : Accorder des privilèges à l'utilisateur sur la base de données source
Utilisez SQL*Plus ou Oracle SQL Developer pour vous connecter à l'instance de la base de données RDS for Oracle qui contient 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 instance Amazon RDS, vous pouvez ignorer cette étape. Vous allez utiliser votre compte d'utilisateur principal Amazon RDS for 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 en utilisant DBMS_DATAPUMP
Pour créer un fichier de vidage, procédez comme suit :
-
Utilisez SQL*Plus ou Oracle SQL Developer pour vous connecter à l'instance Oracle source avec un utilisateur administrateur ou avec l'utilisateur créé à l'étape 2. Si la base de données source est une instance de base de données Amazon RDS for Oracle, connectez-vous avec l'utilisateur principal Amazon RDS.
-
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 au sein du même VPC ou peered VPCs, 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é à partir du même VPC ou d'un VPC appairé. Pour plus d'informations, consultez 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 appelé to_rds
qui se connecte à l'utilisateur principal Amazon RDS au niveau de 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 : copier le fichier de vidage exporté vers l'instance de base de données cible en utilisant 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 : importer le fichier de données vers l'instance de base de données cible en utilisant DBMS_DATAPUMP
Utilisez Oracle Data Pump pour importer le schéma dans l'instance de base de données. Notez que des options supplémentaires comme METADATA_REMAP pourraient être obligatoires.
Connectez-vous à l'instance de base de données avec le compte d'utilisateur principal Amazon RDS for 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 Statusrdsadmin.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');