dbstart
et dbstop
Le démarrage et l'arrêt automatique de la base de données Oracle peuvent être effectués (avec la version 7.3.3.0.0) avec les
fichiers dbstart
et dbshut
, tous deux fournis par Oracle. Ces fichiers dépendent sur l'existence du
fichier /etc/oratab
pour fonctionner (bien qu'en modifiant les fichiers dbshut
et dbstart
il puissent être déplacés).
Le format du fichier /etc/oratab
est le suivant:
SID:ORACLE_HOME:AUTO
Un exemple:
orcl:/home/oracle/7.3.3.0.0:Y
leaveup:/home/oracle/7.3.2.1.0:N
init.d
et rc.d
Pour démarrer et arrêter la base de données quand la machine se lance ou s'éteint, il faut modifier les routines de démarrage pour la machine Linux. Ceci est très facile, bien que je devrais souligner que cela peut changer suivant la distribution Linux (Slackware, Debian, RedHat, etc). Je vais montrer quelques exemples qui marchent avec RedHat Linux 5.0. Pour modifier ceux-ci pour votre propre distribution Linux, veuillez voir votre documentation Linux. (bien que ceci doit être valable pour n'importe quel UNIX de type Sys V)
Premièrement, nous devons créer le script qui exécutera dbshut
et dbstart
dans le répertoire /etc/rc.d/init.d
. Créez le fichier suivant comme /etc/rc.d/init.d/oracle
:
#!/bin/sh
#
# /etc/rc.d/init.d/oracle
# Description: Starts and stops the Oracle database and listeners
# See how we were called.
case "$1" in
start)
echo -n "Starting Oracle Databases: "
echo "----------------------------------------------------">> /var/log/oracle
date +"! %T %a %D : Starting Oracle Databases as part of system up.">> /var/log/oracle
echo "----------------------------------------------------">> /var/log/oracle
su - oracle -c dbstart>> /var/log/oracle
echo "Done."
echo -n "Starting Oracle Listeners: "
su - oracle -c "lsnrctl start">> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------">> /var/log/oracle
date +"! %T %a %D : Finished.">> /var/log/oracle
echo "----------------------------------------------------">> /var/log/oracle
touch /var/lock/subsys/oracle
;;
stop)
echo -n "Shutting Down Oracle Listeners: "
echo "----------------------------------------------------">> /var/log/oracle
date +"! %T %a %D : Shutting Down Oracle Databases as part of system down.">> /var/log/oracle
echo "----------------------------------------------------">> /var/log/oracle
su - oracle -c "lsnrctl stop">> /var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo -n "Shutting Down Oracle Databases: "
su - oracle -c dbshut>> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------">> /var/log/oracle
date +"! %T %a %D : Finished.">> /var/log/oracle
echo "----------------------------------------------------">> /var/log/oracle
;;
restart)
echo -n "Restarting Oracle Databases: "
echo "----------------------------------------------------">> /var/log/oracle
date +"! %T %a %D : Restarting Oracle Databases as part of system up.">> /var/log/oracle
echo "----------------------------------------------------">> /var/log/oracle
su - oracle -c dbstop>> /var/log/oracle
su - oracle -c dbstart>> /var/log/oracle
echo "Done."
echo -n "Restarting Oracle Listeners: "
su - oracle -c "lsnrctl stop">> /var/log/oracle
su - oracle -c "lsnrctl start">> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------">> /var/log/oracle
date +"! %T %a %D : Finished.">> /var/log/oracle
echo "----------------------------------------------------">> /var/log/oracle
touch /var/lock/subsys/oracle
;;
*)
echo "Usage: oracle {start|stop|restart}"
exit 1
esac
Il vaut la peine de vérifier si le fichier arrête et démarre
vraiment correctement les bases de données pour le système.
Vérifiez le fichier de log, /var/log/oracle
, pour les messages d'erreur.
Une fois que le script marche, nous devons créer les liens symboliques de start
et kill
dans les répertoires appropriés de niveau d'exécution (runlevel)
/etc/rc.d/rcX.d
.
Les commandes suivantes assureront que les bases de données vont démarrer dans les niveaux d'exécution 2,3 et 4:
$ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle
$ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle
$ ln -s ../init.d/oracle /etc/rc.d/rc4.d/S99oracle
Pour arrêter les bases de données avant un réamorçage ou arrêt, nous avons besoin des liens suivants:
$ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # Halting
$ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # Rebooting