Démarrage automatique sous linux / Unix
Oracle (et le listener s’il n’est pas protégé par un mot de passe) peuvent être démarrés automatiquement comme un service. L’implantation des fichiers et les ‘run level’ utilisés au boot dépendent des distributions.
Voici un exemple qui fonctionne sous Ubuntu :
- se positionner dans le répertoire d’initialisation qui va bien, ici /etc/init.d
- créer un fichier
/etc/oraclectlcomme suit avec les bonnes valeur de ORACLE_HOME
et de compte propriétaire oracle# les 2 commentaires ‘chkconfig’ et ‘description’ suivants sont OBLIGATOIRES
# on fournit liste_run_level priorite_start priorite_stop, ici 2,3,5 et 80 , 20
# chkconfig: 235 80 20
# description: ajout de service auto pour start/stop oracle#!/bin/bash
ORACLE_OWNER=”oracle”
ORACLE_HOME=”/oracle/db11a”
case “$1″ in
start)
echo -n $”Starting Oracle DB:”
su - $ORACLE_OWNER -c “$ORACLE_HOME/bin/dbstart $ORACLE_HOME”
echo “OK”
;;
stop)
echo -n $”Stopping Oracle DB:”
su - $ORACLE_OWNER -c “$ORACLE_HOME/bin/dbshut $ORACLE_HOME”
echo “OK”
;;
*)
echo $”Usage: $0 {start|stop}”
esac - changer le groupe (dba en général) et les permissions du fichier
$> sudo chgrp dba oraclectl
$> sudo chmod 750 oraclectl - tester le script a la main
$> ./oraclectl start
- ajouter le service oraclectl
Le moyen le plus simple pour ce faire plutôt que de bidouiller les rc0.d , rc1.d, rc2.d …et autres liens symboliques est d’utiliser la commande chkconfig qui va bien (cf parametres mlis en commentaires en début du script précédent
$> sudo chkconfig –add oraclectl
# ou sans utiliser les commentaires du script (on precise explicitement les levels :
$> chkconfig –level 235 oraclectl on
$> #verifier :$> chkconfig -l oraclectl
oraclectl 0:off 1:off 2:on 3:on 4:off 5:on 6:off
$> # verifier si necessaire le runlevel courant
$> runlevel
N 2Apres un reboot de la machine le service oracle devrait démarrer automatiquement…



