Database

Oracle Sauvegarder avec Impdp / Expdp et le Parfile

Dans un billet précédent j’avais abordé ces 2 outils pour se faire des backups « en réseau », voici à présent plus en détail, le fonctionnement des ces 2 outils.

Oracle fournit donc bien évidement des outils pour produire des sauvegardes de ses données.

Les plus basiques sont impdp et expdp.

  • Le premier produit un import d’un dump.
  • Le second export un/des schémas.

impdp

Exemple d’import d’un schéma customer, dont le nom de fichier se nomme foo.dmp dans mon schema nommé MYWORK et ma tablespace MYWORKD_TB

impdp USER/pass schemas=customer dumpfile=foo.dmp directory=wkdir remap_schema=CUSTOMER:MYWORK remap_tablespace=CUSTOMER_TB:MYWOKRD_TB LOGFILE=foo.log

le paramètre directory indique à oracle quel est l’objet directory dans lequel il doit utiliser le dumpfile et ecrire dans le fichier de log foo.log

pour connaitre le nom du directory, on se connecte comme dba à la base oracle puis on tapera:

SELECT * FROM dba_directories;

on obtiendra donc le path vers le dossier où mettre foo.dmp pour qu’il soit localisé par Oracle.

Quand on veut lancer ses commandes, on a bien souvent une bonne dizaine de paramètres à fournir et il devient assez laborieux de les retenir pour les besoins particuliers d’une base, ou de quelques schémas contenu dans notre base. C’est là qu’entre en jeu le « parfile ».

Celui ci contient ni plus ni moins que les paramètres que l’on saisirait sur la ligne de commandes: voici la tête qu’il aurait avec l’exemple précédent :

customer.par

schemas=customer 
dumpfile=mywork%u.dmp
DIRECTORY=wkdir
remap_schema=CUSTOMER:MYWORK 
remap_tablespace=CUSTOMER_TB:MYWOKRD_TB 
LOGFILE=foo.LOG

et on lancerait l’import comme ceci

impdp USER/pass parfile=customer.par

cette fois ci customer.par est cherché dans le dossier courant, et non dans le directory oracle

expdp
L’export cette fois ci fonctionne de la même façon :

expdp user/pass directory=wkdir logfile=exp_mywork.log dumpfile=mywork.dmp

et c’est tout.

parallel
Un paramètre intéressant lorsqu’on vous fournit des dumps est l’option parallel, utilisable lors des exports et des imports.

L’intérêt est d’accélérer le traitement des sauvegardes

Le dumps est en « morceaux » (de tailles non egales) ; le nombre de morceaux etant la valeur donnée à l’option parallel, exemple :

expdp user/pass directory=wkdir logfile=exp_mywork.log dumpfile=mywork.dmp parallel=4

produira les fichiers

  • mywork1.dmp
  • mywork2.dmp
  • mywork3.dmp
  • mywork4.dmp

ensuite pour remonter ce dump on ecrira :

impdp USER/pass directory=wkdir logfile=exp_mywork.log dumpfile=mywork%U.dmp parallel=4

That’s all folk ;)