DB-Schema mit DATAPUMP exportieren (expdp) und importieren (impdp)
Praxisbeispiel wie ein Schemastrukturexport mittels DATAPUMP – expdp – 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.
1 2 3 4 5 |
[]$ expdp system/pwd@myprod SCHEMAS=app_schema DIRECTORY=DATA_PUMP_DIR DUMPFILE=app_schema.dmp CONTENT=METADATA_ONLY |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[]$ impdp system/pwd@mydev DIRECTORY=DATA_PUMP_DIR DUMPFILE=app_schema.dmp CONTENT=METADATA_ONLY REMAP_SCHEMA=app_schema:dev_app_schema TRANSFORM=oid:n:type TRANSFORM=SEGMENT_ATTRIBUTES:n:table SQLFILE=das_wird_alles_ausgefuehrt.sql []$ impdp system/pwd@mydev DIRECTORY=DATA_PUMP_DIR DUMPFILE=app_schema.dmp CONTENT=METADATA_ONLY REMAP_SCHEMA=app_schema:dev_app_schema TRANSFORM=oid:n:type TRANSFORM=SEGMENT_ATTRIBUTES:n:table |
5 KOMMENTARE




