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.