Import/Export

Avant tout il faut préciser que cette méthode est une méthode logique de sauvegarde (Export) et de restauration des données (Import). Elle va nous permettre de sauvegarder le contenu logique d'une base de données dans un fichier de transfert Oracle au format binaire, ou fichier dump. Ce fichier pourra donc être relu pour recréer des objets qu'il contient. Ce transfert peut s'accomplir sur une même base ou même sur deux bases Oracle, et cela même si leurs configurations matérielles et logicielles diffèrent. Cela signifie que l'on peut tout à fait exporter une base sous Windows pour l'importer sous Linux ou Unix (sauf pour les tablespaces transportables).

Ces deux utilitaires qui peuvent être alors employés comme des techniques de sauvegarde peuvent être exécutées à partir de n'importe quel client NET*8, le fichier DUMP est traité, dans ce cas, de manière locale par rapport au client : lors d'un import ou d'un export à partir d'un client NET*8, il faut faire attention car cette opération peut augmenter le trafic du réseau et affecter ce dernier de manière importante. Autre précision de taille : la version de l'utilitaire Import ne peut être antérieure à celle de l'utilitaire Export, plus précisément on ne saurait exporter une base de données Oracle 9i pour l'importer sur une base de données 8i avec leur utilitaire d'origine. Et enfin dernier détail mais non des moindres, ne compressez jamais un fichier dump avec un outil de compression système Winzip (Windows) ou GZIP (Linux - Unix), vous risqueriez d'avoir de mauvaises surprises lors de sa décompression. 

Privilèges pré-requis :

Actions
Privilège ou rôle nécessaire
Exporter son propre schéma
CREATE SESSION
Exporter d'autres schémas
SYSDBA, EXP_FULL_DATABASE et DBA
Exporter la base entière ou tablespaces
EXP_FULL_DATABASE
Importer un objet du fichier DUMP
IMP_FULL_DATABASE

    Les différents modes d'export et d'import :
   
a.      Niveau base de données complète :

C'est le mode le plus complet, lors de ce type d'exportation tous les objets de la base sont exportés à l'exception de certains utilisateurs : SYS, ORDSYS, CTXSYS, MDSYS et ORDPLUGINS. Par contre les informations relatives aux structures de base de données, telles que les définitions de tablespaces et de segments de rollback, sont incluses. Lors de L'insertion des données tout ces objets sont importés et créés dans la base de destination : le paramètre FULL permet de spécifier ce mode pour l'exportation et l'importation.

Export FULL des objets :
----------------------------------------------------------------------------------------
C:\> exp userid=system/manager file=c:\backup\export_full.dump
log=c:\control\export_full.log full=y rows=y
 ---------------------------------------------------------------------------------------
Ici, on se connecte à la base en tant que SYSTEM (userid=system/manager) et on exporte toute la base (full=y) avec les données (rows=y). On sauvegarde la sortie dans le fichier de log (log=c:\control\export_full.log).
 ---------------------------------------------------------------------------------------
Import de tous les schémas inclus dans le DUMP :
---------------------------------------------------------------------------------------
C:\> imp userid=system/manager file=c:\backup\export_full.dump
log=c:\control\export_full.log
----------------------------------------------------------------------------------------

b.      Niveau utilisateur :

Dans ce cas là, ce sont tous les objets appartenant à un utilisateur qui sont exportés: tables, fonctions, synonymes, déclencheurs, liens de bases de données… Le paramètre OWNER permet de désigner les utilisateurs que l'on désire exporter et le paramètre FROMUSER désigne quel est l'utilisateur à importer du fichier Dump (le paramètre TOUSER nous indique quand à lui le schéma destinataire).
 -----------------------------------------------------------------------------------------
Export du schéma SCOTT :
------------------------------------------------------------------------------------------
C:\> exp userid=system/manager file=c:\backup\export_full.dump
log=c:\control\export_full.log owner=scott
 -------------------------------------------------------------------------------------------
   Import du schéma SCOTT dans le schéma TEST :
--------------------------------------------------------------------------------------------
C:\> imp userid=system/manager file=c:\backup\export_full.dump
log=c:\control\export_full.log fromuser=scott touser=test
 ---------------------------------------------------------------------------------------------

c.      Niveau table :

Lors de l'exportation de tables individuelles tous leurs objets associés (index, contraintes, déclencheurs, privilèges …) sont écrits dans le fichier DUMP. Lors de l'importation tout comme l'exportation les tables doivent être nommées grâce au paramètre TABLES.

Export de la table ACCOUNT de l'utilisateur SCOTT :
-----------------------------------------------------------------------------------------
C:\> exp userid=system/manager file=c:\backup\export_full.dump
log=c:\control\export_full.log tables=scott.account
-----------------------------------------------------------------------------------------
         Import de la table ACCOUNT de l'utilisateur SCOTT dans TEST :
         -----------------------------------------------------------------------------------------
         C:\> imp userid=system/manager file=c:\backup\export_full.dump
         log=c:\control\export_full.log fromuser=scott touser=test 
         tables=scott.account
         -----------------------------------------------------------------------------------------

d.      Niveau tablespace :

Lors de l'exportation, des métas donnés concernant les tablespaces spécifiés et les objets qu'ils contiennent sont écrites dans un fichier DUMP.

Export du tablespace USER :
 ------------------------------------------------------------------------------------------
C:\> exp userid=system/manager file=c:\backup\export_full.dump
log=c:\control\export_full.log tablespaces=user
-------------------------------------------------------------------------------------------

                   Import du tablespace USER :
 ---------------------------------------------------------------------------------------