Dans de nombreux environnements, il est souhaitable que la base de données et l'écouteur Oracle s'arrêtent et démarrent automatiquement lorsque le serveur redémarre. Si vous avez cette exigence, suivez les étapes suivantes pour automatiser l'arrêt et le démarrage de votre base de données et de votre programme d'écoute :
Étapes pour configurer le démarrage/l'arrêt automatique
1. Modifiez le fichier /etc/oratab et placez un Y à la fin de l'entrée pour les bases de données que vous souhaitez redémarrer automatiquement lorsque le système redémarre. Vous aurez peut-être besoin des privilèges root pour modifier le fichier :
# vi /etc/oratab [SID]:[ORACLE_HOME]:Y
Le Y à la fin de la chaîne signifie que la base de données peut être démarrée et arrêtée par les scripts ORACLE_HOME/bin/dbstart et ORACLE_HOME/bin/dbshut.
Remarque :avec certains systèmes Unix (tels que Solaris), le fichier oratab se trouve généralement dans le répertoire /var/opt/oracle.
2. Créez le script de service /etc/init.d/dbora . Le contenu du script est le suivant. Assurez-vous de modifier les valeurs des variables ORA_HOME et ORA_OWNER pour qu'elles correspondent à votre environnement. Il s'agit d'un simple script de ce dont vous auriez besoin au minimum pour arrêter et démarrer une base de données et un écouteur :
# vi /etc/init.d/dbora #!/bin/bash # chkconfig: 35 99 10 # description: Starts and stops Oracle processes ORA_HOME=/oracle/app/oracle/product/11.2.0/db_1 ORA_OWNER=oracle case "$1" in 'start') su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" su - $ORA_OWNER -c $ORA_HOME/bin/dbstart ;; 'stop') su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" su - $ORA_OWNER -c $ORA_HOME/bin/dbshut ;; esac # End of script dbora
Comprendre le scénario
Les lignes :
# chkconfig: 35 99 10 # description: Starts and stops Oracle database
sont obligatoires et pas seulement des commentaires puisqu'ils décrivent les caractéristiques du service où :
- 35 signifie que le service sera démarré aux niveaux d'initialisation 3 et 5 et sera arrêté aux autres niveaux.
- 99 signifie que le service sera démarré à la fin proche du traitement de niveau init
- 10 signifie que le service sera arrêté au début du traitement du niveau d'initialisation
Le reste du script est assez facile à comprendre. Le premier cas démarre le listener/DB alors que le 2ème cas l'arrête. Suivez les étapes ci-dessous pour rendre le script exécutable et activer son exécution automatique au démarrage du système.
Rendre le script exécutable et activer son exécution au démarrage
1. Modifiez le groupe du fichier dbora pour qu'il corresponde au groupe attribué au propriétaire du système d'exploitation du logiciel Oracle (généralement oinstall ou dba) :
# chgrp dba /etc/init.d/dbora
2. Définissez les autorisations de script sur 755.
# chmod 750 /etc/init.d/dbora
3. Exécutez la commande chkconfig suivante :
# chkconfig --add dbora
Cette action enregistre le service auprès du mécanisme de service Linux. Cela crée également les liens symboliques appropriés vers les fichiers sous le répertoire /etc/rc.d. Utilisez l'option –list pour afficher si un service est activé ou désactivé pour chaque niveau d'exécution :
# chkconfig --list | grep dbora dbora 0:off 1:off 2:off 3:on 4:off 5:on 6:off
Cette sortie indique que le service dbora est activé pour les niveaux d'exécution 3 et 5. Si vous devez supprimer un service, utilisez le –del option de chkconfig.
Tester le script
1. Pour tester si le script dbora fonctionne, en tant que root, exécutez ce qui suit pour arrêter votre base de données et votre écouteur :
# /etc/init.d/dbora stop
2. Pour tester le démarrage de votre base de données et de votre écouteur, en tant que root, exécutez la commande suivante :
# /etc/init.d/dbora start
Réflexions finales
L'automatisation de l'arrêt et du démarrage de votre base de données Oracle varie selon que vous utilisez des outils tels que le logiciel de cluster ou ASM. La solution de cette section montre les étapes typiques pour implémenter l'arrêt et le démarrage de votre base de données dans les scénarios où vous n'avez pas d'autre logiciel qui gère cette tâche.