Problemas Oracle Jobs. No se ejecuta.

Transcripción

Problemas Oracle Jobs. No se ejecuta.
Problemas Oracle Jobs. No se ejecuta. - Administración de Oracle - Orasite.com
Escrito por Administrator
Jueves, 23 de Diciembre de 2010 18:43 -
1. Objetivo
El objetivo de este articulo explicar el problema que puede surgir en las bases de datos oracle9
cuando el proceso background que gestiona las colas de oracle se queda colgado. En este
documento se explica como detectar esta situación y solucionarla. Si deseas saber más acerca
de Oracle Jobs pincha aquí .
2. Jobs Oracle
Los jobs de oracle es una forma de automatizar una tarea dentro de la base de datos oracle.
Para que estos funcionen la base de datos tiene que estar activa y el parámetro
job_queue_processes del init.ora o spfile tiene que ser mayor que cero.
Para verificar que el valor de este parámetro es mayor que cero podemos realizarlo de la
siguiente forma. (Usuario sys)
SQL> select value from v$parameter where name like '%job%'
El número obtenido nos indicará las “colas” que gestionarán los jobs de nuestra base de datos
y creará el proceso ora_cjq0_sid en el sistema operativo.
Para ver si la base de datos tiene algún job programado podemos realizar la siguiente consulta
con el usuario sys
SQL> select * from dba_jobs
Ejemplo de consultas con usuario sys:
SQL> select job,log_user,priv_user,schema_user,last_date,last_sec,next_date,broken,interval
from dba_jobs
Vemos si el parámetro job_queue_processes es mayor que 0:
SQL> select value from v$parameter where name like '%job%'
En caso de que no sea mayor que cero habría que modificarlo para que los jobs pudieran
funcionar.
Vemos que existe un proceso en el sistema operativo ora_cjq0_sid:
$ ps –fea | grep cjq
1/3
Problemas Oracle Jobs. No se ejecuta. - Administración de Oracle - Orasite.com
Escrito por Administrator
Jueves, 23 de Diciembre de 2010 18:43 -
3. Problemas Jobs
El principal problema de los jobs surge cuando estos no están ejecutando. Las causas pueden
ser varias:
No existen Jobs en la base de datos: Para ello comprobamos según se ha explicado en el
apartado anterior accediendo a la tabla dba_jobs los jobs que existen en la base de datos. En
caso de que existan jobs es importante fijarse cuando fue la última vez que se ejecutaron y
cuando se deberían de haber ejecutado.
El parámetro del job_queue_processes es igual a cero: Si existen jobs en la base de datos
y estos deberían de ejecutarse nos tenemos que fijar en este parámetro para ver si es mayor
que cero. Si este parámetro está a cero por muchos jobs que haya programados en la base de
datos no se ejecutarán.
El proceso de jobs del sistema operativo está colgado: Cuando se detecta que un job
debería haberse ejecutado y el parámetro job_queue_processes es mayor que cero, tenemos
que comprobar que el proceso background que controla este proceso es correcto. Para ello
realizamos como se ha visto en el apartado anterior: ps –fea | grep cjq para ver si ese proceso
tiene un “tiempo” o “parámetro anormal” de ejecución.
Ejemplo:
[root@orasite root]# ps -fea | grep cjq
oracle9 1558 1 0 Jun08 ? 00:00:05 ora_cjq0_orasite1
oracle9 1626 1 38 Jun08 ? 9-22:26:08 ora_cjq0_orasite2
oracle9 18806 1 0 Jun18 ? 00:00:03 ora_cjq0_orasite3
root 27950 27883 0 10:14 pts/1 00:00:00 grep cjq
En este caso es la base de datos orasite2 la que tiene un problema en la gestión de los jobs
4. Solucionar problema jobs
Para solucionar el último caso explicado en el apartado anterior (el proceso background de la
base de datos está “colgado”) realizamos los siguientes pasos
Vemos cuantos procesos hay:
SQL> show parameter job_queue_processes;
2/3
Problemas Oracle Jobs. No se ejecuta. - Administración de Oracle - Orasite.com
Escrito por Administrator
Jueves, 23 de Diciembre de 2010 18:43 -
Ponemos el valor de job_queue_processes a 0 y matamos el proceso con kill -9 a nivel del
sistema operativo el proceso.
SQL> alter system set job_queue_processes=0;
kill -9
Una vez que el proceso se ha ido reiniciamos al valor original job_queue_processes:
SQL> alter system set job_queue_processes=
3/3

Documentos relacionados