Comment transférer des données à l'aide des commandes expdp et impdp?

29

Je suis un noeud Oracle et mon intention est de transférer toutes les données et métadonnées d'un schéma à un autre schéma dans une base de données Oracle. Je prévois d'utiliser les commandes expdpet les datapump impdp. J'ai des questions à ce sujet:

  • Puis-je créer un schéma cible sans utilisateur ou dois-je d'abord créer un utilisateur (ce qui crée également un schéma)?
  • Puis-je exécuter des commandes expdpet impdputiliser un compte SYS (en tant que sysdba)? Est-ce une méthode préférée?
  • Cette instruction prend-elle tous les objets (données et métadonnées) d'un schéma et les déplace-t-elle dans un autre schéma?

    expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log  

    Le schéma cible est-il donc une copie exacte du schéma source après la impdpcommande?

jrara
la source

Réponses:

31

impdp va créer l'utilisateur s'il n'est pas encore présent, vous n'avez donc pas à vous en préoccuper à moins que ce ne soit pas ce que vous voulez.

Ne pas exécuter impdbou en expdptant que sysdba, ne le faites que si le support Oracle le demande dans des circonstances spécifiques. Utilisez un utilisateur ordinaire pour cela - celui qui a reçu le dbarôle par exemple. (Il existe des [IMPORT|EXPORT]_FULL_DATABASEprivilèges spécifiquement pour ce type de chose, vous devrez également accorder l'accès aux objets d'annuaire Oracle.)

Une exportation de schéma complète (métadonnées et contenu) ressemblerait en effet à:

expdp user/pass schemas=<schemaname> directory=dumpdir \
      dumpfile=<schemaname>.dmp \
      logfile=expdp_<schemaname>.log

Si vous souhaitez importer vers un autre utilisateur / schéma (la base de données cible peut être la même que la source), vous pouvez utiliser:

impdp user/pass schemas=schema1 directory=dumpdir \
      remap_schema=schema1:schema2 \
      dumpfile=schema1.dmp \
      logfile=impdp_schema2.log

Si vous ne voulez pas une importation complète, vous pouvez définir des filtres à la fois sur les données et les métadonnées. Voir Filtrage lors des opérations d'importation .

Le guide des utilitaires contient tous les détails, je vous recommande fortement de lire au moins la partie aperçu.

Tapis
la source
2

Pour importer les tables tronquées, c'est-à-dire que vous souhaitez uniquement que les données soient réimportées dans la table:

impdp user/pass TABLES=dept DIRECTORY=TEST_dir dumpfile=TEST.dmp logfile=expdpTEST.log TABLE_EXISTS_ACTION=REPLACE

Au-dessus de ma table, deptje veux importer. Je l'ai tronqué plus tôt. À partir du fichier de vidage qui est TEST.dmp, et logfilequi l'est, expdpTEST.logje veux que les données soient importées (la structure de la table sera la même, nous utilisons donc le paramètre TABLE_EXISTS_ACTION).

Si vous avez tronqué 2 tables, par exemple empet dept, et que la emptable a dept_idcomme clé étrangère, vous devez d'abord importer la depttable, puis la emptable pour éviter les erreurs lors de l'importation.

plus d'informations http://satya-dba.blogspot.in/2009/05/datapump.html

user3649154
la source