Linux Services – Oracle Database And Grid Control Service START/STOP

Oracle Databases
Image via Wikipedia

Cuando trabajamos en la automatización de procesos un punto importante en las single instances es configurar un servicio del sistema operativo para poder levantarlas.

Que es un servicio ?

Un servicio son scripts automatizados para realizar start/down de programas o “servicios” (Valga la redundancia) que son lanzados cuando el kernel se carga en memoria al inicializar el Sistema Operativo y ejecuta cada uno de ellos según en el run level que se encuentren.

Como es la estructura de los servicios ?

Veamos paso por paso.

Cuando se inicializa el server, el kernel se carga en memoria como el proceso padre y dispara subprocesos ejecutando en orden lo que se encuentra en los diferentes run levels.

Los subprocesos son los scripts que se encuentran en el /etc/rc.d

Ahi podemos encontrar los subdirectorios (o run levels ) rc0.d, rc1.d … hasta llegar al rc6.d

[root@lxcontrol10 rc.d]# ls -l
total 100
drwxr-xr-x  2 root root  4096 Jul 23 19:50 init.d
-rwxr-xr-x  1 root root  2352 Jan 23  2009 rc
drwxr-xr-x  2 root root  4096 Feb 10  2010 rc0.d
drwxr-xr-x  2 root root  4096 Feb 10  2010 rc1.d
drwxr-xr-x  2 root root  4096 Jul 23 19:50 rc2.d
drwxr-xr-x  2 root root  4096 Jul 23 19:50 rc3.d
drwxr-xr-x  2 root root  4096 Feb 10  2010 rc4.d
drwxr-xr-x  2 root root  4096 Jul 23 19:50 rc5.d
drwxr-xr-x  2 root root  4096 Feb 10  2010 rc6.d
-rwxr-xr-x  1 root root   289 Aug  5 12:20 rc.local
-rwxr-xr-x  1 root root 28059 Jan 23  2009 rc.sysinit

Aqui, en cada run level se encuentran los scripts que fueron programados , en la mayoria de los casos para soportar los siguientes argumentos.

  • start
  • stop
  • status
  • restart

Solo root puede ejecutar estos servicios en sus diferentes argumentos. También si los permisos están configurados adecuadamente, lo podemos hacer con el comando sudo.

Al momento de agregar un nuevo servicio, debemos considerar si no tiene dependecias previas, si no precisa la ejecución de un paso anterior.

Ahora vemos el orden de los run levels.

 0 Detiene o apaga el sistema operativo.
 1 Modo monousuario, generalmente se utiliza para mantenimiento del sistema.
 2 Modo multiusuario, pero no posee soporte de red.
 3 Modo multiusuario completo, con servicios de red.
 4 es muy poco utlizado, generalmente se utiliza para un inicio personalizado.
 5 Modo multiusuario completo con inicio gráfico. (X Window)
 6 Reinicio. (reboot)

Ahora que conocemos bien que es un servicio vamos a ver para que nos sirve.

Supongamos que tenemos un Grid Control , con su repositorio en una single instance de oracle en ASM , y queremos que arranque en modo automatico cada vez que reiniciamos el server o en caso de rebooteo automatico, o de caida del equipo donde no podamos accesar por RSA y un tecnico amigo va al centro de computos para apretar el boton de power on.

Entonces voy a armar un script, que debe ejecutar el usuario oracle o cualquier usuario con privilegios (ver articulo).

Al probar que funciona , que sube y baja todo ordenado, lo edito y le doy forma de servicio en el encabezado y dejo como referencia los runlevel en los cuales debe correr , que seran utilizados por el comando chkconfig en la creacion del servicio.

#===================================================================================
#!/bin/bash
#
# chkconfig: 345 99 10
# descripción: Script para start/down de servicios Oracle.
#
#
# Parametros
# ==========
# ORACLE_HOME : Home del software de oracle para poder ejecutar correctamente
# los comandos dbstart / dbshut
# GC_ORA_HOME : Home del Grid Control
# ORA_OWNER: es el usuario dueño de la Base de datos y Grid Control
#
# El script debe ser probado en un entorno de desarrollo y asegurar el correcto
# funcuionamiento antes de ser llevado a un ambiente productivo.
#                                                                      Autor : JAM
#====================================================================================

## Variables de Entorno.

ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_emrep
GC_ORA_HOME=/u01/app/oracle/Middleware/oms11g
RMAN_HOME=/u01/app/oracle/product/10.2.0/db_catrman
ORA_OWNER=oracle

## Control para verificar que se encuentre el comando.

if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi

case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - oracle -c 'export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_catrman ; export RMAN_ORA_HOME=/u01/app/oracle/product/10.2.0/db_catrman ; $RMAN_ORA_HOME/bin/lsnrctl start LISTENER_RMAN ; $RMAN_ORA_HOME/bin/lsnrctl start LISTENER'
su - $ORA_OWNER -c $ORACLE_HOME/bin/dbstart
su - $ORA_OWNER -c "$GC_ORA_HOME/bin/emctl start oms"
touch /var/lock/subsys/dbora
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$GC_ORA_HOME/bin/emctl stop oms"
su - oracle -c 'export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_catrman ; export RMAN_ORA_HOME=/u01/app/oracle/product/10.2.0/db_catrman ; $RMAN_ORA_HOME/bin/lsnrctl stop LISTENER_RMAN ; $RMAN_ORA_HOME/bin/lsnrctl stop LISTENER'
su - $ORA_OWNER -c $ORACLE_HOME/bin/dbshut
rm -f /var/lock/subsys/dbora
;;
esac

Comando chkconfig

El comando chkconfig generalmente es utilizado para activar y desactivar servicios del arranque y la bajada de un server.
Para poder familiarizarnos con el vamos a ejecutar un ejemplo:

Veamos los wildcards del comando chkconfig y comenzamos nuestra tarea.

[root@lxcontrol10 init.d]# chkconfig --help
chkconfig version 1.3.30.2 - Copyright (C) 1997-2000 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage:   chkconfig --list [name]
chkconfig --add
chkconfig --del
chkconfig [--level ]

Creando un servicio

Primero Paso: Verificamos que no se exista el servicio o que posea el mismo nombre.

[root@lxcontrol10 init.d]# chkconfig --list | grep dbora

Segundo Paso : Copiamos el archivo al init

[jmercado@lxcontrol10 ~]$ sudo cp dbora /etc/rc.d/init.d/

[jmercado@lxcontrol10 ~]$ ls -l /etc/rc.d/init.d/dbora
-rwxr-xr-x 1 root root 1696 Jan 12 15:37 /etc/rc.d/init.d/dbora

Tercer paso : Al verificar que no existe, lo creamos .

[root@lxcontrol10 init.d]# chkconfig --add dbora

Cuarto Paso : Agregamos el level (345) y lo activamos con ON .

[root@lxcontrol10 init.d]# chkconfig --level 3456 dbora on

Quinto Paso : Verificamos la creacion y si estan bien colocados los runlevels.

[root@lxcontrol10 init.d]# chkconfig --list | grep dbora
dbora          	0:off	1:off	2:off	3:on	4:on	5:on	6:on

Otra tarea que nos dara un mayor margen , para encarar otros proyectos con mayor traquilidad.

One thought on “Linux Services – Oracle Database And Grid Control Service START/STOP

Comments are closed.