25. September 2010
Auch unter MEDISTAR-SQL (Oracle-Version) ist es möglich die Praxisdaten auf einem anderen Rechner zu importieren. Ich lasse mir in der Praxis den Inhalt des Ordners „…\MEDISTAR\Sicherung“ mit Hilfe von RobocopyMonitor automatisch auf ein USB-Stick sichern.
Der Import in die MEDISTAR-SQL-Installation auf dem Heimrechner gelingt bequem mit der folgenden Batch-Datei. Die Oracle- und MEDISTAR-Dienste müssen während des Imports bereits laufen!
| MSRestore.cmd |
@echo off & setlocal
color 1f
title Wiederherstellung der MEDISTAR-SQL-Sicherung
set 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 |
Das Passwort für den Benutzer sys müssen Sie in dem Skript passend ersetzen.
18. September 2010
Man kann ja darüber diskutieren, ob die Oracle-Datenbank für eine Kleinpraxis überdimensioniert ist. Unvernünftig wäre es auf jeden Fall auf einem Heimrechner, der in der Hauptsache für andere Dinge benutzt wird, die MEDISTAR- und Oracle-Dienste ständig laufen zu lassen.
Ich habe daher den Starttyp der Dienste von „Automatisch“ auf „Manuell“ geändert. Wenn ich MEDISTAR benutzen möchte, starte ich die Dienste durch den Aufruf eines Powershell-Skriptes.
Gegenüber einer normalen Batchdatei hat Powershell Vorteile: Erstens kann sich das Skript selbst Administratorrechte anfordern und zweitens informiert das Skript darüber, wann die Dienste laufen.
Wenn Sie auf Ihrem Rechner Powershell zum ersten mal benutzen, können Sie keine Skripte ausführen. Sie müssen zuvor die Ausführungsrichtlinien ändern.
| OraStart.ps1 |
# Starte Skript mit Administratorrechten, falls ohne diese Rechte gestartet wurde.
$identity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$princ = New-Object System.Security.Principal.WindowsPrincipal($identity)
if(!$princ.IsInRole( `
[System.Security.Principal.WindowsBuiltInRole]::Administrator))
{
$powershell = [System.Diagnostics.Process]::GetCurrentProcess()
$psi = New-Object System.Diagnostics.ProcessStartInfo $powerShell.Path
$script = $MyInvocation.MyCommand.Path
$prm = $script
foreach($a in $args) {
$prm += ‘ ‘ + $a
}
$psi.Arguments = $prm
$psi.Verb = “runas”
[System.Diagnostics.Process]::Start($psi) | Out-Null
return;
}
# Starte Dienste, deren Starttyp von ‘Automatisch’ auf ‘Manuell’ geändert wurde.
Start-Service “MEDISTAR ISAM”
Start-Service “MEDISTAR RPCI”
Start-Service OracleMTSRecoveryService
Start-Service OracleOraDb11g_home1TNSListener
Start-Service OracleServiceMEDISTAR
Start-Service OracleDBConsolemedistar
# Starte, wenn gewünscht, einen MEDISTAR-Task, nachdem die Dienste gestarte wurden.
$title = “MEDISTAR-SQL-Starter”
$message = “MEDISTAR kann nun gestartet werden!`nSoll dies jetzt geschehen (Task-0)?”
$yes = New-Object System.Management.Automation.Host.ChoiceDescription “&Ja, Task-0 öffnen”, `
“Der MEDISTAR-Task wird gestartet.”
$no = New-Object System.Management.Automation.Host.ChoiceDescription “&Nein, nur beenden.”, `
“Powershell-Skript wird beendet.”
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice($title, $message, $options, 0)
switch ($result) {
0 {D:\MEDISTAR\prg4\m42t.exe desk-0 -style medistar}
1 {“Sie haben Nein gewählt.”}
} |
Das Skript kann in abgewandelter Form auch die Dienste beenden. Es muss nur „Start-Service“ durch „Stop-Service” ersetzt werden und Part 3 gelöscht werden.
8. September 2010
Da ich MEDISTAR-SQL nicht nur in der Praxis installiert habe, sondern auch auf meinem Heimrechner, konnte ich einige Erfahrungen sammeln.
Installation auf einem NICHT-Server-Betriebssystem
Auf beiden Rechnern konnte sich MEDISTAR am Ende der Installation nicht mit der Oracle-Datenbank verbinden.
Die Ursache war ein zu korrigiernder Eintrag in einer Konfigurationsdatei für den Authentifizierungs-Service von Oracle. In der Datei sqlnet.ora (Pfad: D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN) musste die Zeile
SQLNET.AUTHENTICATION_SERVICES= (NTS)
in
SQLNET.AUTHENTICATION_SERVICES= (NONE)
geändert werden. Diese Änderung ist wahrscheinlich nur dann erforderlich, wenn die Installation auf einen NICHT-Server-Betriebssystem erfolgt.
32Bit und 64Bit-Version
In der Praxis läuft auf dem Hauptrechner ein 32Bit-Windows. Zuhause benutzte ich Windows 7 in der 64Bit-Version. Auf der meiner Installations-DVD befindet sich nur die 32Bit-Version. Ich habe sie auf die Festplatte kopiert und den Oracle-Ordner mit den von der Oracle-Webseite heruntergeladenen 64Bit-Dateien überschrieben. Wenn man dann die Install.exe übergeht und gleich im Ordner „Setup” die Setup.exe startet, funktioniert die Installation.
Erfassen neuer Patienten
Nach der Installation ist das Erfassen neuer Patienten nicht möglich. Beim Versuch erscheint die Fehlermeldung: „Die Datenansicht für Praxis 1 ist nicht eingetragen. Es können daher für diese Praxis keine Patienten angelegt werden.“
Lösung: Index – Installation | Festlegung Passwörter: Freigabe Praxen: Alle Praxen markieren und freigeben.
Default-Wert für die Lebensdauer der Datenbank-Passwörter
Die unter Oracle vergebenen Kennworte laufen gemäß Voreinstellung nach 180 Tagen ab. Das würde ohne Korrektur bedeuten, dass 6 Monate nach der Installation nichts mehr läuft.
Lösung: Win+R, cmd eingeben, SQL-Plus aufrufen:
sqlplus sys/Passwort as sysdba (Passwort bitte anpassen)
Einstellungen prüfen:
select username, expiry_date, profile from dba_users;
Wenn bei den Usern sys, system und msuser ein Expiry-Date steht (s. Bild), muss dies geändert werden:
alter profile default limit password_life_time unlimited;

Benutzername und Passwort für Installation
Eigentlich sollte während der skriptgesteuerten Installation keine Nachfrage nach Benutzernamen und Passwort erfolgen. Nach einem vorhergehenden gescheiterten Installationversuch kann es aber offenbar dazu kommen. Bei mir funktionierte die Eingabe des Benutzernamens „system“. Das Passwort für diesen Benuzter habe ich der Datei D:\MEDISTAR\INST\sql.ini entnommen.
Kommentare