web-dev-qa-db-fra.com

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

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 expdp et impdp de datapump. 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 les commandes expdp et impdp à l'aide du 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 commande impdp?

29
jrara

impdp créera l'utilisateur s'il n'est pas encore présent, vous n'avez donc pas à vous en soucier sauf si ce n'est pas ce que vous voulez.

N'exécutez pas impdb ou expdp en tant 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 rôle dba par exemple. (Il y a [IMPORT|EXPORT]_FULL_DATABASE privilè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 pendant les opérations d'importation .

Le tilities Guide a tous les détails, je vous recommande fortement de lire au moins la partie aperçu.

31
Mat

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 se trouve dept que je veux importer. Je l'ai tronqué plus tôt. Du fichier de vidage qui est TEST.dmp et logfile qui est expdpTEST.log Je souhaite que seules 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 emp et dept, et emp table a dept_id comme clé étrangère, vous devez d'abord importer la table dept puis la table emp pour éviter les erreurs lors de l'importation.

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

2
user3649154