Introduction

La version 7 de RedHat/CentOS a modifié le principe de démarrage des services au boot. Après le classique init system 5 en version 5, upstart en version 6, il faut maintenant utiliser systemd.
Ce billet présente la création simple d'un service systemd démarrant les bases Oracle en lisant le fichier /etc/oratab. Le script lance aussi le listener.

Script systemd

Se positionner dans le répertoire /usr/lib/systemd/system et créer un fichier nommé oracle.service avec les lignes suivantes :

[Unit]
Description=oracle
After=syslog.target
After=network.target

[Service]
Type=forking
Environment=ORACLE_HOME=/ora01/app/oracle/product/12.1.0.2/DB 
User=oracle 
Group=oinstall 
ExecStart=/ora01/app/oracle/product/12.1.0.2/DB/bin/dbstart ${ORACLE_HOME} 
ExecStop=/ora01/app/oracle/product/12.1.0.2/DB/bin/dbshut ${ORACLE_HOME}
ReStart=yes

[Install]
WantedBy=multi-user.target

Ce script utilise les shell dbstart et dbshut fournis par Oracle. Il suffit d'apdater les chemins selon la plate-forme. L'activation est classique en systemd

systemctl enable oracle

Pour rappel les bases à démarrer doivent être inscrites dans le fichier /etc/oratab comme dans le modèle ci-dessous.

YODA: /ora01/app/oracle/product/12.1.0.2/DB:Y
LUKE: /ora01/app/oracle/product/12.1.0.2/DB:Y
...