Inhaltsverzeichnis
Start der Oracle Instance unter Windows
Oracle ist Prozessorientiert intern aufgebaut, Windows aber Thread basierend.
Daher wird für die Oracle „Prozessumgebung“ ein „Mutterthread“ für eine Instance über einen Service gestartet.
Der Service wird mit dem oradim Utiltity angelegt. Der Service kann nun auf Autostart gesetzt werden.
Wie steuere ich aber nun den kompletten Start der Instance? "Connect to an idle Instance" Problem
Über diese Registy Keys (HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_DATABASE ) wird das Verhalten beim Startup/Shutdown gesteuert:
- ORA_<SID>_AUTOSTART - Werte: TRUE / FALSE
- ORA_<SID>_SHUTDOWN - Werte : TRUE / FALSE
- ORA_<SID>_SHUTDOWN_TIMEOUT - Wert: ms
- ORA_<SID>_SHUTDOWNTYPE - Werte: immediate / abort / normal
- ORA_<SID>_PFILE - Pfad zum pfile
(geschwärzter Bereich = SID!)
Eine Oracle Instance nur im Mount Modus starten
Leider kann unter Windows per Default nur entweder nur der Service oder die komplette DB gestartet werden.
Soll zum Beispiel in einer Standby Umgebung die DB Instance nur bis in den Mount Modus gestartet werden muss das mit einem eigenen Script umgesetzt werden. Wird der Start Mode auf Auto gestellt, öffnet sich die DB readonly und schon wird zur EE eine Oracle “Active Data Guard„ Lizenz benötigt!
In einer ASM Umgbung kann das Problem über Oracle Restart gelöst werden.
In einer Single Instance Standard Umgebung hilft ein Script um hier die DB nach dem Start wiederum nur im mount Modus zu starten.
Ablauf:
- Powershell Script anlegen, mit einer kleinen Verzögerung die Instance im Mount Modus starten
- mount_database.ps1 ⇒ mount_database.ps1
- Service für das Powerschell mit nssm anlegen
- Service muss unter einen Konto laufen, dem die DB gehöhrt, nicht unter system!
- Für das Anlegen des Service siehe (siehe auch Programm unter Windows 2008 als Service starten
- Als Abhängig zum Oracle Dienst setzen
C:\Windows\System32\sc.exe config "ORACLE_MOUNT" depend= "OracleServiceGPI"
(auf das Leerzeichen nach dem = achten!!)