Oracle Datapump

Der alte Export/Import hat ausgedient. Oracle stellt seit einiger Zeit Datapump zur Verfügung. Um Datapump nutzen zu können muss zuvor ein Verzeichnis auf OS-Ebene (sollte klar sein) und ein Oracle Directory erstellt werden (ggf. Berechtigungen dafür erteilen):

-- Directory erstellen
CREATE OR REPLACE DIRECTORY
<DumpDirectory> AS
'<OS-Verzeichnis>';
 
-- Berechtigungen erteilen
GRANT EXECUTE, READ, WRITE ON DIRECTORY <OS-Verzeichnis> 
TO <USER> WITH GRANT OPTION;

Anschließend kann man mit dem OS-Befehl expdp Schemas oder auch Tabellen (etc.) exportieren:

expdp <USER>/<PW> DUMPFILE=<dumpfile.dmp> DIRECTORY=<Oracle-Directory> LOGFILE=<logfile.log> TABLES=<Tabellen>

Hier auch mal ein Beispiel für einen Export mit FlashBack:

expdp system/geheim dumpfile=Dump_01032014_0700.dmp logfile=Dump_01032014_0700.log directory=DATA_PUMP_DIR schemas=TEST flashback_time=\"to_timestamp\(\'01-03-2014 07:00:00\', \'DD-MM-YYYY HH24:MI:SS\'\)\"

Leider werden ggf. genutzte Sequenzes dabei nicht exportiert. Dieses ist nur bei einem Schemaexport möglich bzw. über die Option Include (ebenfalls nur für Schemaexport).

Ein Import der Daten erfolgt mit dem Programm impdp. Zu beachte ist dabei, dass falls die Daten auf einer anderen Oracle-Instanz eingespielt werden sollen, auch dort ein Oracle-Directory vorhanden sein muss.

impdp <USER>/<PW> DUMPFILE=<dumpfile.dmp> DIRECTORY=<Oracle-Directory> TABLE_EXISTS_ACTION=REPLACE LOGFILE=<logfile.log> TABLES=<Tabellen>

Wichtig ist hierbei der Parameter TABLE_EXISTS_ACTION. Wenn er auf REPLACE gesetzt wird, wird erst die Tabelle gelöscht und anschließend neu importiert.

Schreibe einen Kommentar

Deine Email-Adresse wird nicht veröffentlicht.