2016-07-12 3 views
2

Ich habe Oracle 10 auf einem Computer und da habe ich eine Datenbank centt. Auf B-Computer habe ich Oracle 11.2.0 installiert und es gibt keine Datenbank. Der Name der Datenbank auf einem Computer ist Centt und dort habe ich auch einige Benutzer wie STT, WNN, Tnn usw. Jetzt möchte ich die gesamte Datenbank von einem Computer mit allen Benutzern in eine Datei exportieren (zB allDBdump.dat) . Dann möchte ich diese Datenbank (Datei allDBdump.dat) zu B Computer importieren. Ich habe Exportbefehl auf einem Computer wie unten verwendet:Wie exportiere ich eine komplette Datenbank von Oracle 10 und importiere sie mit allen Benutzern nach Oracle 11.2.0?

exp userid=sys/sys file='c:\allDBdump.dat' log='c:\allDBdump.log' FULL=Y 

Nun würde Ich mag mit allen Benutzern gesamte Datenbank auf einem Computer importieren. Ich weiß, dass ich vor dem Import eine Datenbank auf einem Computer erstellen muss, von "Database Configuration Assistant". Dann brauche ich durch Befehle alle Benutzer in SQL-Tool zu erstellen:

CREATE USER st IDENTIFIED BY st; 
GRANT ALL PRIVILEGES TO st WITH ADMIN OPTION; 
GRANT IMP_FULL_DATABASE TO st WITH ADMIN OPTION; 

Dann benutze ich Befehl Datenbank importieren:

imp 'sys/[email protected]:1521/centt as sysdba' FULL=Y file=allDBdump.dat fromuser=st touser=st 

Diese Lösung ist gut, aber ich brauche alle Benutzer vor dem Import wissen . Die Frage ist, wie man es macht, wie man allDBdump.dat importiert, ohne alle Benutzer auf einem Computer zu erstellen. Etwas wie:

imp 'sys/[email protected]:1521/centt as sysdba' FULL=Y file=allDBdump.dat IMPORT_ENTIRE_DATABASE_WITH_ALL_USERS_ON_A_COMPUTER 

Ihnen sehr danken.

+0

sich selbst einen Gefallen tun und verwenden impdp/expdp statt exp/imp. Es gibt einige Dinge, die exp/imp in neueren Versionen von Oracle (z. B. Kontexten) nicht korrekt behandeln wird. –

Antwort

0

Haben Sie versucht Datapump?. Es ist viel besser. Einziger Nachteil ist es, dass Sie beide ein Verzeichnis benötigen auf den Servern (oder sie verbinden mit db_link)

expdp system/[email protected] full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=expdpDB10G.log 

impdp system/[email protected] full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=impdpDB11G.log 
+0

Ich habe versucht, etwas wie folgt: expdp 'sys/sys @ dba als sysdba' voll = Y 'Verzeichnis = D: \ tmpFolder' Dumpdatei = dump.dmp Logdatei = dump.log Und ich habe einen Fehler: LRM -00105: 'directory = D: \ tmpFolder' erlaubt keinen logischen Wert für – user2856064

+0

@ user2856064 Sie müssen ein Datenbankverzeichnis angeben. Suchen Sie nach 'select * from SYS.ALL_DIRECTORIES;' Sie sollten mindestens DATA_PUMP_DIR als Standardverzeichnis für expdp/impdp haben – vercelli

+0

@ user2856064 Wie ist es gelaufen? – vercelli

Verwandte Themen