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í.
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
2.1 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
2.2 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.
2.3 Vemos que existe un proceso en el sistema operativo ora_cjq0_sid:
$ ps –fea | grep cjq
El principal problema de los jobs surge cuando estos no están ejecutando. Las causas pueden ser varias:
3.1 No existen Jobs en la base de datos:
3.2 El parámetro del job_queue_processes es igual a cero.
3.3 El proceso de jobs del sistema operativo está colgado.
[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
Para solucionar el último caso explicado en el apartado anterior (el proceso background de la base de datos está “colgado”) realizamos los siguientes pasos
4.1 Vemos cuantos procesos hay:
SQL> show parameter job_queue_processes;
4.2 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
4.3 Una vez que el proceso se ha ido reiniciamos al valor original job_queue_processes:
SQL> alter system set job_queue_processes=
Comentarios:
por ERamirez | 1/10/2008 5:23:31 PM
RE: Problemas Oracle Jobs - No se están ejecutando
Hola, ya probe las indicaciones dadas por estas sugerencias, sin embargo siempre persiste el problema, podrian ayudarme. saludos,
por AMG | 1/15/2008 12:04:23 PM
RE: Problemas Oracle Jobs - No se están ejecutando
cuales son los pasos que sigues?
cuantos jobs tienes en la base de datos?
cual es tu valor actual del job_queue_processes?