Linux: Inicio automático de Oracle

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.

Entradas relacionas

2 comentarios en “Linux: Inicio automático de Oracle”

Deja un comentario