2010-09-14 4 views
2

ancienne approche pour l'exportation/importation schéma tout:Oracle: importation décharge de la pompe de données sans contenu du fichier de vidage de connaissances

exp user/[email protected] FILE=export.dmp OWNER=user ROWS=Y 
imp newuser/[email protected] FULL=Y FILE=export.dmp 

Nouvelle approche:

expdp user/[email protected] DUMPFILE=export.dp DIRECTORY=exportfolder 

Cependant avait un problème avec l'importation:

impdp newuser/[email protected] DUMPFILE=export.dp DIRECTORY=exportfolder 

n'importera rien:

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options 
ORA-31655: no data or metadata objects selected for job 
ORA-39154: Objects from foreign schemas have been removed from import 
Master table "NEWUSER"."SYS_IMPORT_FULL_01" successfully loaded/unloaded 
Starting "NEWUSER"."SYS_IMPORT_FULL_01": newuser/********@server 
DUMPFILE=export.dp DIRECTORY=exportfolder 
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA 
Job "NEWUSER"."SYS_IMPORT_FULL_01" successfully completed at 19:13:04 

Ajout de l'option schémas ne sera pas utile (résultat est le même, l'oracle ne permet pas d'objets non appartenant à l'importation):

impdp newuser/[email protected] DUMPFILE=export.dp DIRECTORY=exportfolder schemas=user 

Et une seule approche de travail que j'ai trouvé:

impdp newuser/[email protected] DUMPFILE=export.dp DIRECTORY=exportfolder remap_schema=newuser:user 

Donc, la question est de savoir comment importer la vidage de données de schéma sans savoir quel schéma a été exporté?

(Bien sûr, je peux regarder les 512 premiers octets de fichier d'exportation et trouver la chaîne comme "USER". "SYS_EXPORT_SCHEMA_01"), mais peut-être existe une autre approche?

Répondre

6

D'abord, sur le plan technique que vous n'utilisez pas correctement le plein = y:

imp newuser/[email protected] FULL=Y FILE=export.dmp 

Vous devriez plutôt faire:

imp newuser/[email protected] touser=newuser fromuser=user FILE=export.dmp 

est similaire à Impdp commande remap_schema.

Cependant, je comprends que ce que vous essayez de faire est d'importer un schéma d'un utilisateur à l'autre sans connaître auparavant l'utilisateur source. Je devais juste mentionner ceci parce que si vous ne connaissez pas l'utilisateur source, alors il peut être facilement supposé que vous ne connaissez pas le contenu du fichier de données; et si vous ne connaissez pas le contenu du fichier de données, vous pourriez importer beaucoup plus d'utilisateurs et de données que vous ne le pensez en émettant un full = y. Point: Une importation complète signifie importer tous les utilisateurs et leur contenu associé; quel que soit l'utilisateur que vous utilisez pour vous connecter à la base de données et démarrer l'importation.

Après avoir dit mon avertissement, impdp a exactement la même fonctionnalité en ce qui concerne une importation complète - il suffit d'utiliser pleinement = y

impdp newuser/[email protected] DUMPFILE=export.dp DIRECTORY=exportfolder full=y 

MISE À JOUR

this will works in newuser have privilege: IMP_FULL_DATABASE 

execution `grant IMP_FULL_DATABASE to newuser` solved it. 

Références: http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dp_import.htm#sthref301

+0

merci pour suggestion, mais plein = y ne aide pas de toute façon, l'erreur sera la même: ORA-39154: Objets de l'étranger n schémas ont été retirés de l'importation, donc en fait importer importé :). Mais c'est inutile car il ne charge aucun objet de la sauvegarde, car son schéma différent. –

+0

@Michael Pakhanstov - C'est vrai, un full = y dira l'import pour importer des données dans la base de données pour les utilisateurs qui sont dans l'importation.Si new_user n'a pas de données dans l'importation, ce qui n'est pas le cas dans votre exemple, alors vous ne verrez aucune donnée ou aucun objet dans new_user; C'est là que remap_schema entre en jeu. ORA-39154 indique que vous n'avez pas le privilège d'importer les données d'autres utilisateurs - ce que vous faites avec full = y pour imp et impdp. –

Questions connexes