Data pump

De knowledge
Révision datée du 27 février 2025 à 22:25 par Jpinon (discussion | contributions) (Page créée avec « 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... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

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!)