Data pump
tapump est apparut avec Oracle V9. Il s'agit d'un utilitaire d'import/export d'objets oracle (donc de schémas ou de bases) côté serveur. En effet la commande, même si elle est lancée sur un client, effectue les écritures ou les lectures sur le serveur.
Pré requis
Comme la commande ne peut pas donner un emplacement physique (le client ne voit pas forcément le disque du serveur) oracle doit être configuré pour associer des noms symboliques avec des répertoires physiques.
Cette opération se fait une fois pour toutes au niveau de la base de donnée.
CREATE DIRECTORY datapump AS '/opt/datastore/datapump';
Droits d'accès
Par défaut seul un DBA peut effectuer des opérations d'import export. Si on désire donner un droit d'accès à un utilisateur user.
GRANT READ, WRITE ON DIRECTORY datapump to user;
Import / Export
Il faut pour cela disposer d'un utilisateur ayant "les droits". (system par exemple).
Dans les exemples suivants la connexion user/pwd@db est considérée comme ayant ces droits. filename.dump est le fichier disque généré sur le disque (dans le repertoir référencé par datapump).
Export
Faire un "dump" avec datapump se fait avec la commande expdp.
Faire le dump d'un schéma en entier:
expdp user/pwd@db DUMPFILE=filename.dump DIRECTORY=datapump SCHEMA=schema
Les statistiques ne sont pas toujours bonnes a exporter (gros volume et beaucoup de temps)
expdp user/pwd@db DUMPFILE=filename.dump DIRECTORY=datapump SCHEMA=schema EXCLUDE=STATISTICS
Pour n'exporter qu'une (ou plusieurs) table
expdp user/pwd@db DUMPFILE=filename.dump DIRECTORY=datapump TABLES=TEST_TABLE
la table est dans le schema de "user" ou bien:
expdp user/pwd@db DUMPFILE=filename.dump DIRECTORY=datapump TABLES=schema.TEST_TABLE
Pour un schema en particulier. On peut donner une liste de tables (ou de schémas)
expdp user/pwd@db DUMPFILE=filename.dump DIRECTORY=datapump TABLES=TEST_TABLE1,TEST_TABLE2 expdp user/pwd@db DUMPFILE=filename.dump DIRECTORY=datapump SCHEMA=schema1,schema2
Ou même un motif (type "like") de tables (ou de schema)
expdp user/pwd@db DUMPFILE=filename.dump DIRECTORY=datapump TABLES=schema.TEST%
Fait un dump avec toutes les tables du schéma schema commençant par "TEST".
Import
Les imports répondent a la même syntaxe mais la commande est impdp.
impdp user/pwd@db REMAP_SCHEMA=from_schema:to_schema DUMPFILE=dumpfile.dmp DIRECTORY=datapump
Seule la commande REMAP_SCHEMA est nouvelle. Elle renseigne dans quel schéma il faut importer chaque schéma contenu dans le dump.
Remarques
- Le fichier Destination ne doit pas exister. expdb n'écrase pas le fichier mais signale une erreur. (ce n'est pas le cas avec le fichier de logs LOGFILE= qui lui est écrasé)
- Attention un élément non exporté ne peut pas être exclus a l'import! En cas d'export avec EXCLUDE=STATISTICS in import avec EXCLUDE=STATISTICS provoque une erreur! (impdb ne sait pas exclure quelque chose qui n'existe pas!)