Importieren Sie die vollständige Oracle-Dump-Datei in die neue Oracle-Installation


7

Ich importiere eine Oracle-Dump-Füllung, die in einer AIX Oracle 9.2-Installation mit einer vollständigen Exportoption erstellt wurde, in Windows Oracle 10.2.0.4 unter Windows 2008 R2 x64.

Ich möchte die Datei in eine saubere Datenbank importieren. Wenn ich jedoch nicht zuerst eine Datenbank erstelle, muss nichts erstellt werden. Wenn ich die Datenbank erstelle, werden viele Fehler ausgegeben, die sich über fehlende Benutzer und Tabellenbereiche beschweren, selbst bei FULL = Y.

Wie kann ich diesen Speicherauszug in eine saubere Oracle-Installation importieren?

Der Export lief unter System und der Import auch. Die Indexdatei enthält nicht die Anweisungen zum Importieren der Benutzer und Tabellenbereiche. Wenn ich jedoch den vollständigen Import für die Originaldatei ausführe, versucht IMP, die zu erstellen TABLESPACES(die falsche Pfade haben, die ich ändern muss, und das weiß ich), aber Es wird nicht versucht, die Benutzer zu erstellen, sondern nur, dass sie nicht vorhanden sind.

Der tatsächliche Benutzer des Exportbefehls ist:

exp <a_User>/<a_Password> FULL=Y FILE=/PATHHERE/oradata/Export/expdat.dmp log=exp`date + %d%m%y.%H%M%S`.log consistent=y

Antworten:


3

Wenn Sie die alte imp-Methode verwenden, müssen zuerst die Benutzer und Tablespaces erstellt werden. Dies umfasst Zuschüsse, Datenbankverknüpfungen und erweiterte Warteschlangen, die Sie möglicherweise verwenden. Ein Beispielskript könnte in Windows imp a_DBA_user / apassword so aussehen: LOG = C: \ dump \ logs \ import.log file = user01.dmp fromuser = user_name touser = user_name

Die neuere Datenpumpenmethode funktioniert wunderbar. Sie müssen den Benutzer nicht erstellen, aber ich würde alle benutzerdefinierten Tabellenbereiche erstellen, die Sie möglicherweise auf dem Original haben.

Für einen Beispieldatenpumpenaufruf müssen Sie eine Datenbankverbindung zur ursprünglichen Datenbank und zu einem Verzeichnis erstellen. Dadurch wird ein Verzeichnis erstellt

CREATE OR REPLACE DIRECTORY 
DATA_PUMP_DIR AS 
'C:\app\Oracle\product\11.2.0\dbhome_1\rdbms\log\';


GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO EXP_FULL_DATABASE;

GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO auser;

GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO IMP_FULL_DATABASE;

Setzen Sie in Ihrem zu importierenden Skript diese Variablen NLS_LANG

ORACLE_SID = Ihr Datenbankname

impdp a_user_who_exists / Ihr Datenbankname Verzeichnis = DATA_PUMP_DIR network_link = ursprüngliche Datenbanknamenschemata = Benutzer1, Benutzer2 LOGFILE = DataPump.log TABLE_EXISTS_ACTION = REPLACE


1
Ist es möglich, eine Datenpumpe zu erstellen, die eine Verbindung zwischen dem "neuen" Oracle 10.2.0.4 und dem "alten" Oracle 9.2 unter Aix herstellt? Ich dachte, DPs funktionieren erst ab 10 g.
Alexandre Sousa

Entschuldigung, ich habe verpasst, dass Sie eine 9i-Quelle hatten. Sie werden gezwungen sein, exp- und imp-Befehle zu verwenden und Ihre Dump-Dateien physisch von einem Computer auf einen anderen zu
kopieren

1
Benutzer und Tablespaces müssen nicht zuerst mit einem vollständigen Export / Import erstellt werden, es sei denn, Sie müssen etwas ändern (wie es das OP anscheinend tut, da sich die Dateipfade geändert haben).
Alex Poole

2

Schließlich führte ich eine Prozedur aus, um alle Benutzer und Tabellenbereiche aufzulisten, sie in der Zieldatenbank neu zu erstellen und beim Ausführen des Imports den Schalter DESTROY = Y zu verwenden. Dies löste mein Problem.


1

Versuchen Sie dies an einer Eingabeaufforderung:

cd \
imp user_name/password file=path+dump name full=y

So was:

imp ccs_status/ccs file=D:\ccs_status.dmp full=y
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.