@echo off & setlocal
color 1f
title Wiederherstellung der MEDISTAR-SQL-Sicherungset DumpFile=ORACLE_EXP.DMP
set DumpFolder=G:\Sicherung
set MediStar=D:\MEDISTAR
rem DumpFolder 16 = Desktop, 17 = Arbeitsplatz, 18 = Netzwerkumgebung
echo DumpFolder = „%DumpFolder%“ > %~n0.vbs
echo If not CreateObject(„Scripting.FileSystemObject“).FolderExists(DumpFolder) Then >> %~n0.vbs
echo DumpFolder = 17 >> %~n0.vbs
echo End if >> %~n0.vbs
echo DumpFile = „%DumpFile%“ >> %~n0.vbs
echo Text = „Bitte wählen Sie den Ordner aus, der die zu importierende Datei „“ ^& DumpFile ^& „“ enthält.“ >> %~n0.vbs
echo Set objFolder = CreateObject(„Shell.Application“).BrowseForFolder(0,Text,“&H200″,DumpFolder) >> %~n0.vbs
echo If not objFolder is nothing then >> %~n0.vbs
echo WScript.Echo objFolder.Self.Path >> %~n0.vbs
echo End if >> %~n0.vbs
set DumpFolder=
for /f „delims=“ %%i in (‚cscript.exe %~n0.vbs //nologo‘) do set „DumpFolder=%%i“
if exist %DumpFolder%\%DumpFile% goto WARNING
echo MsgBox „%DumpFile% wurde nicht gefunden!“ ^& vbCrLf ^& _ > %~n0.vbs
echo „Der Vorgang wird abgebrochen.“, vbExclamation , „%~n0“ >> %~n0.vbs
cscript.exe %~n0.vbs //nologo
goto QUIT
:WARNING
echo WScript.Echo MsgBox („ACHTUNG!“ ^& vbCrLf ^& _ > %~n0.vbs
echo „Beim Restore werden die vorhandenen Daten gelöscht.“ ^& vbCrLf ^& vbCrLf ^& _ >> %~n0.vbs
echo „Möchten Sie den Vorgang fortsetzen?“, vbQuestion + vbYesNo, „%~n0“) >> %~n0.vbs
for /f „delims=“ %%i in (‚cscript.exe %~n0.vbs //nologo‘) do set „Answer=%%i“
if „%Answer%“==“6“ goto RESTORE
goto QUIT
:RESTORE
rem Zunächst werden die ISAM-Datenbanken ins MS-Verzeichnis kopiert.
xcopy „%DumpFolder%\hdaten“ „%MediStar%\hdaten“ /d /e /y /f /s
xcopy „%DumpFolder%\med“ „%MediStar%\med“ /d /e /y /f /s
xcopy „%DumpFolder%\para“ „%MediStar%\para“ /d /e /y /f /s
xcopy „%DumpFolder%\pdaten“ „%MediStar%\pdaten“ /d /e /y /f /s
xcopy „%DumpFolder%\praxis“ „%MediStar%\praxis“ /d /e /y /f /s
xcopy „%DumpFolder%\stat“ „%MediStar%\stat“ /d /e /y /f /s
xcopy „%DumpFolder%\inst“ „%MediStar%\inst“ /d /e /y /f /s
cls
rem Wenn der User gedroppt wurde, sind alle Daten aus der DB geloescht.
echo drop user msuser cascade; > %~n0.sql
echo commit; >> %~n0.sql
echo exit >> %~n0.sql
sqlplus sys/Passwort as sysdba @%~n0.sql
echo CREATE or REPLACE DIRECTORY imp_dir AS ‚%DumpFolder%‘; > %~n0.sql
echo exit >> %~n0.sql
sqlplus sys/Passwort as sysdba @%~n0.sql
impdp system/Passwort directory=imp_dir dumpfile=%DumpFile% full=yes logfile=imp_medistar.log
rem Es erfolgen finale Anpassungen, danach wird die DB neugestartet.
echo alter system set processes=930 scope=spfile; > %~n0.sql
echo alter system set sessions=1028 scope=spfile; >> %~n0.sql
echo alter system set transactions=1030 scope=spfile; >> %~n0.sql
echo shutdown immediate >> %~n0.sql
echo startup >> %~n0.sql
echo exit >> %~n0.sql
sqlplus sys/Passwort as sysdba @%~n0.sql
echo. & echo %DumpFolder%\imp_medistar.log wird gestartet.
start /b %DumpFolder%\imp_medistar.log
del %~n0.sql & echo. & pause
:QUIT
del %~n0.vbs |