Unter Windows benötigen Oracle-Datenbanken speziell eingerichtete Systemdienste. Sie können über das Dienstprogramm ORADIM verwaltet werden. Die Systemdienste müssen existieren, bevor eine neue Datenbank erzeugt werden kann. Auch wenn die Datenbank nach einem Server-Reboot nicht mehr automatisch startet, hilft das Wiederherstellen dieser Systemdienste. Schließlich kann auch das Sys/Internal-Passwort über ORADIM geändert werden und die Datenbank startet anschließend mit dem neuen Passwort. Wie das geht und was dabei zu beachten ist, erfahren sie in diesem Artikel.
Mit ORADIM können die Oracle-spezifischen Windows-Dienste erzeugt, gestartet und gelöscht werden.
ORADIM besitzt keine grafische Oberfläche und kann deshalb nur im Eingabeaufforderungs-Fenster gestartet werden.
Alle Ausgaben des Programms ORADIM werden in einem Logfile protokolliert:
Oracle 8.1 und höher: <oracle_home>\DATABASE\ORADIM.LOG
Jede Oracle-Datenbankinstanz hat einen auf dem Server eindeutigen Namen. Als Abkürzung für den Instanznamen wird das Kürzel SID (SystemIdentifier) verwendet.
Falls auf Ihrer Maschine bereits Datenbankdienste existieren, müssen diese zunächst gelöscht werden. Andernfalls oder zum Einrichten einer neuen Datenbank können sie gleich mit Aktion 2 fortfahren.
Beim Wiederherstellen von Datenbankdiensten wird das Passwortfile neu erzeugt. Falls für Ihre Instanz der Systemparameter REMOTE_LOGIN_PASSWORDFILE den Wert EXCLUSIVE hat, müssen SYSDBA/SYSOPER-Privilegien anschließend erneut vergeben werden. Eine Liste der User mit SYSDBA/SYSOPER-Rechten kann vorher über
'SELECT * FROM V$PWFILE_USERS'
ausgegeben werden.
Danach sollte die Datenbank sauber heruntergefahren werden. Das Stoppen der Dienste allein reicht nicht!
Erst danach wird der Dienst 'OracleService<SID>' (und in den Oracle-Versionen 7.3 und 8.0 auch der Dienst 'OracleStart<SID>') gelöscht. Verwenden Sie dazu den folgenden Befehl:
'ORADIM -DELETE -SID <SID>'
Sie sollten über die Systemsteuerung prüfen, ob wirklich beide Dienste entfernt wurden. Falls das nicht geschehen ist, wiederholen Sie die beiden letzten Schritte (Shutdown und ORADIM-Delete). In der ORADIM.LOG-Datei finden Sie Hinweise bzgl. aufgetretener Fehler. Falls immer noch Dienste übrig sind, können Sie diese auch direkt über ihren Namen löschen. Verwenden Sie dazu folgenden Befehl:
'ORADIM -DELETE SRVC <service_name>'
Bitte vergewissern Sie sich in der Systemsteuerung vom Erfolg dieser Maßnahme, bevor Sie den Dienst neu einrichten!
Einen neuen Oracle-Dienst richten sie mit folgendem Befehl ein:
'ORADIM -NEW -SID <SID> -INTPWD <password> -STARTMODE <mode> -PFILE <pfile> [ -SPFILE ]'
dabei ist
<SID> SystemIdentifier der Datenbankinstanz
<password> Passwort für den Benutzer SYS (bzw. internal)
<mode> AUTO Datenbank startet bei Systemstart automatisch
MANUAL Datenbank wird beim Systemstart nicht automatisch
gestartet
<pfile> Verzeichnis- und Dateiname der Initialisierungsdatei
(INIT<sid>.ORA)
-SPFILE Gibt an das die Instanz mit einen SPFILE gestartet werden soll.
Prüfen Sie das ORADIM.LOG auf Fehler! (Es kann z.B. passieren, dass ORADIM wg. fehlender Zugriffsrechte eine evtl. vorhandene Passwort-Datei nicht löschen kann, die müssten Sie dann manuell entfernen, etc.)
Prüfen Sie, ob die Dienste tatsächlich erstellt worden sind. Der OracleService<SID> sollte laufen, falls Sie ORADIM mit Startmode AUTO aufgerufen haben. Der OracleStart<SID> wird nicht gestartet, weil ORADIM keine Information darüber hat, ob die betreffende Datenbank bereits existiert oder erst erstellt wird. Falls Fehler aufgetreten sind, führen sie die unter Aktion 1 beschriebenen Schritte aus, bevor Sie einen neuen Einrichtversuch machen.
Die in Aktion 2 erzeugten Dienste starten Sie mit folgendem Befehl:
'ORADIM -STARTUP -SID <SID> -USRPWD <password> -STARTTYPE <type> -PFILE <pfile>'
dabei ist
<SID> SystemIdentifier der Datenbankinstanz
<password> Passwort für den Benutzer SYS (bzw. internal)
<type> SRVC Starte nur den Dienst
INST Starte den Dienst und die Datenbank-Instanz
<pfile> Verzeichnis- und Dateiname der Initialisierungsdatei
(INIT<sid>.ORA)
Fehler werden auch hier wieder im ORADIM.LOG protokolliert!
ORADIM ermöglicht auch das Stoppen der Datenbankdienste (mit und ohne Herunterfahren der Datenbank):
'ORADIMxx -SHUTDOWN -SID <SID> -USRPWD <password> -SHUTTYPE <type>
-SHUTMODE <mode>'
dabei ist
<SID> SystemIdentifier der Datenbankinstanz
<password> Passwort für den Benutzer SYS (bzw. internal)
<type> SRVC Stoppt nur den Dienst
INST Stoppt den Dienst und fährt die Datenbank-Instanz herunter
<mode> N Shutdown Normal
I Shutdown Immediate
A Shutdown Abort
ORADIM.LOG nicht vergessen!
Zusammenfassung:
Um eine Datenbank unter Windows NT/2000 zu erzeugen und zu starten, ist ein Windows Dienst 'OracleService<SID>' erforderlich. Dieser kann über das Dienstprogramm ORADIM erzeugt werden. Für die Oracle-Versionen 7.3 und 8.0 kann optional der Dienst 'OracleStart<SID>' erzeugt werden, um die Datenbank beim Server-Reboot automatisch zu starten. Ab Version 8i ist für den Autostart kein eigener Dienst mehr erforderlich. Weil ORADIM Registry-Einträge vornimmt, muss dieses Dienstprogramm auf dem Server ausgeführt werden, auf dem die Dienste dann auch laufen (oder mit Hilfe eines Tools, welches den Remote Registry-Zugriff ermöglicht).
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.