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:
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
?
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.
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