# see also https://wiki.centos.org/HowTos/Oracle12onCentos7
# see also https://adrhc.go.ro/wordpress/centos-and-oracle/
# Follow this (works with Ubuntu 16.04 too):
# http://www.techienote.com/install-oracle-12c-on-ubuntu/
# systemd oracle.service (working when only one db is automatically started with /etc/oratab)
[Unit]
Description=Oracle 12c
After=local-fs.target
Wants=local-fs.target
[Service]
Type=forking
User=oracle
Group=oinstall
RuntimeDirectory=oracle
PIDFile=/run/oracle/oracle.pid
Restart=on-failure
RestartSec=3
TimeoutSec=0
ExecStart=/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart /u01/app/oracle/product/12.1.0/dbhome_1
ExecStop=/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbshut /u01/app/oracle/product/12.1.0/dbhome_1
[Install]
WantedBy=multi-user.target
# modify dbstart and dbshut in order to create /run/oracle/oracle.pid needed by oracle.service
# /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart
startinst() {
...
if [ $? -eq 0 ] ; then
echo ""
OS_PID=$(sqlplus -S / AS SYSDBA <<EOF
select SPID from v\$process where PNAME = 'PMON';
EOF
)
OS_PID=$(echo "$OS_PID" | /bin/grep -P "\d+")
echo "$0: ${INST} \"${ORACLE_SID}\" warm started (PID $OS_PID)."
if [ -d /run/oracle ]; then
echo "$OS_PID" > /run/oracle/oracle.pid
echo "created /run/oracle/oracle.pid"
fi
else
$LOGMSG ""
$LOGMSG "Error: ${INST} \"${ORACLE_SID}\" NOT started."
fi
# /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbshut
if test $? -eq 0 ; then
if [ -f /run/oracle/oracle.pid ]; then
# see /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart
rm -fv /run/oracle/oracle.pid
fi
echo "${INST} \"${ORACLE_SID}\" shut down."
else
echo "${INST} \"${ORACLE_SID}\" not shut down."
fi