Uiteraard kan dit met de bekende start en stop scripts. Één van de belangrijkste initialisatie bestanden van Oracle is /etc/oratab. In dit bestand staan regels bestaande uit ORACLE_SID met een Y of N erachter. Wanneer er een Y achter staat zorgt dat ervoor, dat bij het geven van een dbstart commando, de database wordt gestart. En wanneer er een N achterstaat zal dit er dus voor zorgen dat een database afgesloten wordt bij het geven van het dbshut commando.
Voor de volledigheid volgt hier een start/stop-scriptje:
/etc/rc.d/init.d/oracle
#!/bin/sh
.. /etc/rc.d/init.d/functions
RETVAL=0
PATH=$PATH:/usr/local/sbin
case "$1" in
start)
echo -n "Opstarten Oracle 8.1.5:"
su -c oracle8i dbstart &
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/oracle
;;
stop)
echo -n "Stoppen Oracle 8.1.5: "
su -c oracle8i dbshut &
RETVAL=$?
echo
[ RETVAL -eq 0 ] && rm -f /var/lock/subsys/oracle
;;
*)
exit 1
esac
exit $RETVAL
Dit scriptje even symlinken naar de runlevels:
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc3.d/S40oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc0.d/K99oracle
Dit voorbeeld gaat ervan uit dat opgestart wordt in runlevel 3! Start je systeem op in runlevel 5 (grafische login) maak dan een link naar rc5:
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc5.d/S40oracle
Het afsluiten in runlevel 0 (wanneer het systeem uitgaat) lukte bij mijn configuratie niet. Halverwege het script wordt het systeem uitgezet, en dus krijgt Oracle de kans niet om de database netjes af te sluiten. Volgens kun je dat het snelste oplossen door de & achter dbshut weg te halen. Hierdoor blijft het systeem net zolang wachten totdat de database down is. Dit heb ik zelf nog niet getest. Mocht er iemand een betere oplossing hebben dan hoor ik dat graag.