Oracle Data Pump

Data Pump est un outil Oracle permettant de recharger des bases de données, des schémas ou des tables. Il comprend un outil d’export et d’import d’une base de données existante. Nous verrons donc ici comment utiliser ces outils.

NB: Les exemples sont donnés à partir d’un environnement Unix et de l’outil SQL Plus. Je pars du principe que vous maîtrisez les commandes Linux de base.

Oracle Data Pump – Pré-requis

Data Pump est consistué de deux programmes IMPDP et EXPDP. Ces programmes servent respectivement à importer et exporter des bases de données, des schémas ou des objets.

L’import, export d’une base de données Oracle, requiert de la création d’une DIRECTORY. Comme son nom l’indique, il s’agit d’une référence à un répertoire de stockage des fichiers .dmp et des fichiers .log générés par ces outils.

Pour créer une DIRECTORY, il faut se connecter à la base de données via le compte SYS ou SYSTEM.

La liste des DIRECTORY est située dans la table DBA_DIRECTORIES. Pour en créer une nouvelle, il suffit de taper la commande suivante :

CREATE OR REPLACE DIRECTORY dir_name AS 'dir_path';

Ensuite, il faut attribuer les droits aux utilisateurs Oracle concernés par le biais de cette commande :

GRANT READ, WRITE ON DIRECTORY dir_name TO user_name;

Une fois la DIRECTORY correctement paramétré. Nous pouvons passer à la suite. Nous commencerons par expliquer la commande d’export EXPDP et terminerons par la commande d’import IMPDP.

Oracle Data Pump – Export

L’export s’exécute en une ligne commande. Le compte utilisateur doit bénéficier des droits nécessaires pour utiliser l’outil EXPDP.

Plusieurs options sont envisageables (consultables via la commande expdp help=yes), voici les options les plus utilisées :

  • SQLFILE=nom_fichier.sql : Permet de générer le script SQL d’export. Ainsi l’utilisateur pourra le modifier et le rejouer.
  • DIRECTORY=nom_directory : Détermine le nom de la DIRECTORY à utiliser (répertoire de destination des fichiers générés par le programme). Sinon le programme prend celle définie par défaut dans Oracle.
  • DUMPFILE=nom_fichier_%U.dmp : Nom du fichier DUMP généré via l’export. La variable %U, permet d’attribuer un numéro itératif aux fichiers générés.
  • FILESIZE=taille : Détermine une taille limite pour le fichier DUMP exporté et créera donc plusieurs fichiers si nécessaire.
  • LOGFILE=nom_fichier.log : Nom du fichier de log généré.
  • SCHEMAS=nom_schema_1,nom_schema_2 : Schémas Oracle à exporter
  • PARALLEL=nb_proc : Nombre de processeurs utilisés pour traiter la commande. Améliore la performance de l’export.
  • FULL=y : Export complet de toute la base

Exemple de commande (nohup […] & permet d’exécuter la commande en tâche de fond) :
nohup expdp userid=system/manager filesize=5000M dumpfile=expdp_SCHEMA_%U.dmp logfile=expdp_${ORACLE_SID}_`date +%d%m%Y`.log directory=nom_directory schemas=nom_schema parallel=2 &

Oracle Data Pump – Import

L’import s’exécute en une ligne commande. Le compte utilisateur doit bénéficier des droits nécessaires pour utiliser l’outil IMPDP.

Plusieurs options sont envisageables (consultables via la commande impdp help=yes), voici les options les plus utilisées :

  • SQLFILE=nom_fichier.sql : Permet de générer le script SQL d’export. Ainsi l’utilisateur pourra le modifier et le rejouer.
  • DIRECTORY=nom_directory : Détermine le nom de la DIRECTORY à utiliser (répertoire de destination des fichiers générés par le programme). Sinon le programme prend celle définie par défaut dans Oracle.
  • DUMPFILE=nom_fichier_%U.dmp : Nom du fichier DUMP à utiliser lors de l’import. La variable %U, permet de récupérer tous les fichiers démarrant de la même manière.
  • REMAP_SCHEMA=nom_schema_1:nom_schema_2 : Permet d’effectuer l’import sur un schéma en particulier.
  • LOGFILE=nom_fichier.log : Nom du fichier de log généré.
  • SCHEMAS=nom_schema_1,nom_schema_2 : Schémas Oracle à importer
  • PARALLEL=nb_proc : Nombre de processeurs utilisés pour traiter la commande. Améliore la performance de l’import.
  • TABLE_EXISTS_ACTION=[REPLACE, TRUNCATE, APPEND, SKIP] : Détermine l’action à réaliser si une table existe déjà.
    • REPLACE : Supprime la table, Recrée la table et Injecte le contenu depuis la source.
    • TRUNCATE : Vide la table et Injecte le contenu depuis la source
    • APPEND : Ajoute les occurrences manquantes et ne remplace pas les occurences existantes.
    • SKIP : Ne fait rien (Ignore la table) et passe à l’objet suivant.

Exemple de commande :
nohup impdp userid=system/manager dumpfile=expdp_SCHEMA_%U.dmp remap_schema=schema_initial:schema_cible logfile=impdp_${ORACLE_SID}_`date +%d%m%Y`.log directory=nom_directory parallel=2 table_exists_action=REPLACE &

 

Oracle Data Pump : Traitement d’un JOB (impdp, expdp)

Un JOB correspond au traitement impdp ou expdp exécuté. L’information est stockée en base de données et est accessible de cette manière :

  1. Connection à la base de données via SQL Plus
  2. Taper la commande SQL suivante pour récupérer le nom du JOB : select job_name, state from dba_datapump_jobs;

Ensuite, vous pouvez lancer la commande IMPDP ou EXPDP en utilisant l’attribut ATTACH pour accéder au JOB. Exemple :

impdp system/manager attach=JOB_NAME

A cet instant vous entrez dans le JOB et pouvez effectuer différentes actions :

  1. STATUS : Permet de voir l’état du JOB en cours
  2. KILL_JOB : Permet de tuer le JOB en cours
  3. STOP_JOB[=IMMEDIATE] : Arrêt (shutdown) du JOB en cours
  4. START_JOB : Démarre ou reprend le JOB en cours

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *