En esta entrada voy a explicaros como configurar el inicio automático de la base de datos de Oracle así como su listener para que se inicie junto con el arranque del sistema operativo.
Consideraciones previas
Este tutorial voy a hacerlo utilizando la distribución de Linux CentOS 8, Oracle 18c y el usuario oracle que se crea por defecto a la hora de realizar la instalación de Oracle. Comento todo esto porque si tenéis otra distribución de Linux, versión de Oracle o queréis usar otro usuario este tutorial también os servirá pero tendréis que adaptar algunos comandos a vuestro escenario.
Verificación variables de entorno usuario oracle
En primer lugar es importante verificar las variables de entorno, en este ejemplo, del usuario oracle.
Para ello editaremos el fichero .bash_profile.
nano /home/oracle/.bash_profile
Comprobamos que tiene el siguiente contenido (adaptar los parámetros por los de vuestra instalación).
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# User specific environment and startup programs
export ORACLE_BASE=/opt/oracle/
export LD_LIBRARY_PATH=/opt/oracle/product/18c/dbhomeXE/lib
export ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
export PATH=$ORACLE_BASE/product/18c/dbhomeXE/bin:$PATH
export PATH=/usr/bin:$PATH
export ORACLE_SID=XE
Configurar el inicio automático de la base de datos
Editamos el fichero /etc/oratab
nano /etc/oratab
Modificamos el último valor (de N a Y) de la base de datos que queremos que se inicie junto con el arranque del sistema operativo.
XE:/opt/oracle/product/18c/dbhomeXE:Y
Grabamos los cambios.
Creación del script que utilizaremos en el arranque
Creamos un script llamado dbora.
nano /etc/init.d/dbora
Añadimos el siguiente contenido.
#! /bin/sh
#Cambiar el valor ORACLE_HOME por la ruta de instalación de Oracle
ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
#Cambiar el valor ORACLE por el usuario de instalación de Oracle en Linux
ORACLE=oracle
PATH=${PATH}:$ORACLE_HOME/bin
HOST=`hostname`
PLATFORM=`uname`
export ORACLE_HOME PATH
#
if [ ! "$2" = "ORA_DB" ] ; then
      runuser -l $ORACLE  $0 $1 ORA_DB
      if [ "$PLATFORM" = "Linux" ] ; then
         touch /var/lock/subsys/dbora
      fi
      exit
   fi
#
case $1 in
'start')
        $ORACLE_HOME/bin/dbstart $ORACLE_HOME &
        $ORACLE_HOME/bin/lsnrctl start LISTENER
        ;;
'stop')
        $ORACLE_HOME/bin/dbshut $ORACLE_HOME &
        rm -f /var/lock/subsys/dbora
        $ORACLE_HOME/bin/lsnrctl stop LISTENER
        ;;
*)
        echo "usage: $0 {start|stop}"
        exit
        ;;
esac
#
exit
En el código anterior asumo que el listener de Oracle tiene el nombre LISTENER, si es distinto deberemos cambiarlo en todas las líneas donde aparezca la palabra LISTENER.
Continuamos asignando los permisos necesarios para la correcta ejecución del nuevo script que hemos creado.
chgrp dba /etc/init.d/dbora chmod 750 /etc/init.d/dbora
Creamos los enlaces simbólicos necesarios.
ln -s /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora
Comprobación funcionamiento script
Podemos comprobar que el script funciona correctamente parando tanto la base de datos como el listener de la siguiente forma.
/etc/init.d/dbora stop
Y arrancándolo de nuevo.
/etc/init.d/dbora start
Y listo con estos pasos ya se iniciará de forma automática tanto nuestra base de datos como el listener de Oracle junto con el arranque del sistema operativo.
Espero os haya sido de utilidad.
 
					 
		
Muchas gracias por tan excelente tutorial.
Me alegro te haya sido de utilidad 😉