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 ?
Rubriques
Présentation d'Oracle Data Pump
Oracle Data Pump est constitué des composants suivants :
-
Clients de la ligne de commande
expdp
etimpdp
-
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
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.
-
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.
-
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
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.Étant donné qu'RDSOracle n'autorise pas l'accès aux utilisateurs
SYSDBA
administratifsSYS
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 :
-
Transférez le fichier de vidage vers la cible RDS pour l'instance de base de données Oracle.
-
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
. 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
, etRDS_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 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 DATAPUMP du package Oracle DBMS_
. -
Placez le fichier de vidage dans un compartiment Amazon S3.
-
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. -
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
- É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
- Étape 2 : Exporter les données dans un fichier de vidage à l'aide de DBMS _ DATAPUMP
- Étape 3 : Charger le fichier de vidage dans votre 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.
- Étape 5 : Importez votre fichier de vidage dans votre instance de base de données cible à l'aide de DBMS _ DATAPUMP
- Étape 6 : nettoyer
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
É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
-
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.
-
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 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
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 à 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
-
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.
-
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 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
Pour télécharger votre fichier de vidage
-
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
-
Téléchargez le fichier dump en suivant la RDS procédure Amazon
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 à 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
-
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.
-
Importez les données en appelant
DBMS_DATAPUMP
des procédures.L'exemple suivant importe le
SCHEMA_1
données provenant desample_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. -
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
-
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.
-
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 TRANSFER package Oracle DBMSFILE_ _
-
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.
-
Exportez les données à l'aide DATAPUMP du package DBMS_
. -
DBMS_FILE_TRANSFER.PUT_FILE
À utiliser pour copier le fichier de vidage de la base de données Oracle vers leDATA_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. -
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 :
Rubriques
- Conditions requises pour importer des données avec Oracle Data Pump et un lien vers une base de données
- Étape 1 : accorder des privilèges à l'utilisateur sur l'instance de base de données cible RDS pour Oracle
- Étape 2 : Accorder des privilèges à l'utilisateur sur la base de données source
- Étape 3 : créer un fichier de vidage à l'aide de DBMS _ DATAPUMP
- Étape 4 : créer un lien de base de données vers l'instance de base de données cible
- Étape 5 : Copiez le fichier de vidage exporté sur l'instance de base de données cible à l'aide de DBMS _ FILE _ TRANSFER
- Étape 6 : Importez le fichier de données dans l'instance de base de données cible à l'aide de DBMS _ DATAPUMP
- Étape 7 : nettoyer
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 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 :
-
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.
-
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 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 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 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 :
-
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.
-
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 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');