DB-Schema mit DATAPUMP exportieren (expdp) und importieren (impdp)

von Tobias Redmann

Praxisbeispiel wie ein Schemastrukturexport mittels DATAPUMPexpdp – erstellt und in eine andere Oracle-DB mittels impdp importiert wird.

Schema exportieren – expdp

In diesem Beispiel habe ich von einem System einen Strukturexport vom DB-Schema APP_SCHEMA durchgeführt. Dabei melde ich mich als DB-User SYSTEM an. Es muss sichergestellt werden, dass das DIRECTORY DATA_PUMP_DIR entsprechend in der Datenbank vorhanden ist. Des Weiteren gebe ich beim Parameter CONTENT an, dass ich nur die Metadaten in dem Dump benötige.

Dump-Datei auf Zielsystem kopieren

Im nächsten Schritt verschiebe ich den erstellten DUMP app_schema.dmp auf den Zielhost in das dortige DATA_PUMP_DIR Verzeichnis.

Schema importieren – impdp

In meinem Fall ist es wichtig, dass der original Schemaname durch einen neuen in meiner Datenbank ersetzt wird. Das wird mittels REMAP_SCHEMA realisiert. Konkret wird app_schema in das DB-Schema dev_app_schema umgemappt.

Der DB-User muss zuvor nicht in der Datenbank existieren. Des Weiteren werden alle Storageinformationen – Tablespaces – entfernt. Dafür verwende ich den Parameter TRANSFORM=SEGMENT_ATTRIBUTES:n:table. Somit werden alle Tabellen in den Default Tablespace der Zieldatenbank abgelegt.
Natürlich ist es auch möglich jeden einzelnen Tablespace einem anderen zuzuweisen. Das hätte in meinem Fall Stunden gedauert, da in der Produktion über 100 existieren.

Im ersten Schritt gebe ich eigentlich immer den Paramenter SQLFILE an. Dieser bewirkt, dass eine SQL-Datei in dem angebeben DIRECTORY – DATA_PUMP_DIR – mit allen SQL-Statements erzeugt wird. Diese SQL-Datei sehe ich an, ob alle meine Änderungen auch wirklich gezogen haben. Erst dann starte ich den Import ohne den Parameter SQLFILE.

Sollten ObjectTypes im Strukturexport vorhanden sein, empfehle ich immer den Parameter TRANSFORM=oid:n:type zu benutzen, da hier die eindeutigen OIDs aus dem CREATE Statement des ObjectType entfernt werden.

5 KOMMENTARE

avatar placeholder
15
.
07
.
2013
 von  robert reinies
Hallo Herr Besserdich vielen Dank für den guten Artikel DB-Schema mit DATAPUMP Ich kenne das Thema gut und werkle immer noch damit herum um dies oder jenes zu optimieren. Ihr Artikel und der Stil gefällt mir gut und daher ein DAUMEN hoch. Klasse. gruesse R.Reinies
avatar placeholder
16
.
07
.
2013
 von  Karsten Besserdich
Hallo Herr Reinies, vielen Dank für ihr Feedback. Ich habe viele Jahre bei ihrem jetzigen Arbeitgeben als Freiberufler im Oracle Umfeld gearbeitet :-) Wenn Sie Hilfe benötigen, zögern Sie nicht mich zu kontaktieren. Karsten Besserdich
avatar placeholder
14
.
11
.
2015
 von  Volker E.
Guten Tag, ich möchte ein komplettes Oracle Schema, allerdings werden nicht von allen Tabellen die Daten benötigt. (die quelle ist 6TB, das Ziel soll 200GB sein) Wie kann ich sowas am besten bewerkstelligen? Vielen Dank
avatar placeholder
24
.
11
.
2015
 von  Karsten Besserdich
Hallo Volker, du kannst den expdp Aufruf noch zusätzlich mit query=MyTable:"where column beetween 10 AND 1000" ergänzen. Ich hoffe das hilft dir weiter. Gruß Karsten
avatar placeholder
23
.
08
.
2016
 von  Toni A
Hallo, ich möchte ein komplettes Oracle Schema exportieren (Full Dump) und in einen anderen DB Server importieren. Wie würden Sie es tun?? Vielen Dank & VG Toni

SCHREIBEN SIE EINEN KOMMENTAR