Oftmals kommte es bei Kundeninstallationen vor, dass neben der Echt- auch eine Testumgebung eingerichtet wird.
Das bedarf dann eines regelmäßigen Eingriffs, um die Testdaten wieder auf den aktuellen Stand der Echtumgebung zu bringen, damit auch mit aktuellen Daten und – vor allen Dingen – Einstellungen der Echtumgebung getestet werden kann.
Nachfolgend ein kleines Batchscript, das diese Aufgabe übernimmt und (ungetestet) ggf. auch per Aufgabenplanung regelmäßig ausgeführt werden könnte.
@echo off :: Dieses Script exportiert das Schema ECHT, und importiert die Daten direkt in die Testumgebung TEST :: Vorhandene Daten in der Testumgebung werden damit komplett geloescht!! :: Das Dumpfile des Exports wird im definierten Oracle-Dumpdir abgelegt, im Standard unterhalb des :: Oracle-Installationsverzeichnisses im Pfad <INSTALLDIR>admin<SCHEMANAME>dpdump :: ORACLE-DB set instanz=bu.SERVERNAME.world :: Name Quellschema set quellschema=ECHT :: Name Zielschema set zielschema=TEST :: Verzeichnis in dem temporaer der Datenbankexport und SQL-Scripte abgelegt werden set dumpdir=D:DB_Transfer :: Verzeichnis mit SQLs-Scripten die ggf. zusaetzlich noch ausgefuehrt werden sollen/muessen set scriptdir=D:DB_Transfersql cd %dumpdir% cls echo ^ 1. DB Export des Schemas %quellschema% echo. EXPDP system/manager@%instanz% DUMPFILE='%quellschema%.DMP' SCHEMAS=%quellschema% LOGFILE='%quellschema%_export.log' echo. echo ^ Export erfolgt echo. pause echo. echo ^ 2. DB Import des Exports von %quellschema% zu User %zielschema% echo ^ 2.1 Vorhandenen User %zielschema% loeschen echo. echo drop user %quellschema% cascade;>%dumpdir%sqlplus.sql echo quit;>>%dumpdir%sqlplus.sql start /wait cmd.exe /t:4F /k "cd %dumpdir% && cls && echo. && sqlplus system/manager@%instanz% @sqlplus.sql && echo. && echo Alles ok? Dann weiter mit beliebiger Taste... && PAUSE>nul && EXIT" del %dumpdir%sqlplus.sql echo. pause echo. echo ^ 2.2 User %zielschema% neu anlegen echo. echo @%scriptdir%cr_user.sql %zielschema% erp;>%dumpdir%sqlplus.sql echo quit;>>%dumpdir%sqlplus.sql start /wait cmd.exe /t:4F /k "cd %dumpdir% && cls && echo. && sqlplus system/manager@%instanz% @sqlplus.sql && echo. && echo Alles ok? Dann weiter mit beliebiger Taste... && PAUSE>nul && EXIT" del %dumpdir%sqlplus.sql echo. pause echo. echo ^ 2.3 Dump-Import %quellschema% zu %zielschema% echo. impdp system/manager@%INSTANZ% DUMPFILE='%quellschema%.DMP' REMAP_SCHEMA=%quellschema%:%zielschema% echo. echo ^ Import erfolgt echo. pause echo. :: Hier koennen eigene Scripte eingebunden werden, die ggf. nach dem Import laufen sollten echo ^ 2.4 Userberechtigungen neu setzen echo. echo @%scriptdir%user_rights.sql %zielschema%;>%dumpdir%sqlplus.sql echo quit;>>%dumpdir%sqlplus.sql start /wait cmd.exe /t:4F /k "cd %dumpdir% && cls && echo. && sqlplus system/manager@%instanz% @sqlplus.sql && echo. && echo Alles ok? Dann weiter mit beliebiger Taste... && PAUSE>nul && EXIT" del %dumpdir%sqlplus.sql echo. echo Transfer %quellschema% zu %zielschema% abgeschlossen. echo. pause
Infos zum Script:
- Im Script werden temporäre SQL-Scripte erstellt und in einer weiteren DOS-Box ausgeführt und danach wieder gelöscht.
- Es wird zur Anlage des neuen Schemas ein vorhandenes Script genutzt, mehr zu dessen Inhalt z.B. hier oder hier.
- Hier gibt es mehr Infos zur Oracle SID und der TNSNAMES.ORA, welche für den Connectionstring wichtig sind.
- Für einen automatischen Durchlauf, z.B. per Windows Aufgabenplanung (nicht getestet!), müssen sämtliche
PAUSE
-Einträge aus dem Script entfernt werden. - Der erzeugte Dump wird nicht gelöscht (!), das muss auf Wunsch manuell erfolgen oder das Script entsprechend erweitert werden.
Unter SQLPLUS ermittelt man das DUMP-Verzeichnis mit folgendem Statement:
SELECT directory_path FROM dba_directories WHERE directory_name = 'DATA_PUMP_DIR';
Damit sollte es dann funktionieren, viel Erfolg.