Page suivante Page précédente Table des matières

6. Lancement et Arrêt Automatique

6.1 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

6.2 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


Page suivante Page précédente Table des matières