ORACLE
ofrece una cola para planificar operaciones rutinarias en una base de datos. La funcionalidad de los Jobs de Oracle es parecida al cron de UNIX en el cual se puede planificar una tarea, a una determinada hora y con una periodicidad concreta pero en base de datos.
El paquete encargado de hacer esta planificación es DBMS_JOB.
Para que cualquier Job de Oracle se pueda ejecutar tenemos que tener en cuenta el parámetro job_queue_processes no esté a cero, ya que es el que nos indica el número de colas que gestionarán nuestros jobs. Este parámetro debe de ser mayor del número de jobs que se desee ejecutar de forma simultánea (el máximo es 1000 para Oracle).
SQL> show parameter job_queue_processes
SQL> ALTER SYSTEM SET job_queue_processes = num_queue
Para que este cambio tenga efecto se debe de reiniciar la base de datos.
Las vistas que podemos usar para manejar los jobs son:
DBA_JOBS: Muestra la información de todos los jobs de la base de datos.
ALL_JOBS: Muestra la misma información que dba_jobs pero sólo los jobs a los cuales puede acceder el usuario actual con el que se está realizando la consulta.
USER_JOBS: Muestra la misma información que dba_jobs pero solo con los jobs del cual es propietario el usuario con el que se realiza la consulta.
DBA_JOBS_RUNNING: Esta vista contiene la información de todos los jobs que actualmente están corriendo en la base de datos.
ADMINISTRACIÓN BÁSICA DE JOBS:
JOBS en ejecución
SQL>select job_name, session_id, running_instance, elapsed_time, cpu_used from user_scheduler_running_jobs;
Comprobar si hay algún job programado en la base de datos podemos hacer la siguiente consulta con el usuario sys:
SQL> select * from dba_jobs;
Consultar todos los jobs:
SQL> select * from all_scheduler_jobs;
Consultar log de ejecución de jobs:
SQL> select * from all_scheduler_job_log order by log_date desc;
Consultar los jobs que están en ejecución:
SQL> select * from all_scheduler_running_jobs;
Detener un job:
SQL> exec dbms_scheduler.stop_jop('USER.JOB');
Forzar la parada de un job ejecutando la siguiente query como usuario system:
SQL> exec dbms_scheduler.stop_job('USER.JOB', true);
Deshabilitar un Job:
SQL> exec dbms_scheduler.disable('USER.JOB');
Forzar la deshabilitación de un job ejecutando la siguiente query como system:
SQL> exec dbms_scheduler.disable('USER.JOB', true);
Habilitar un Job:
SQL> exec dbms_scheduler.enable('USER.JOB');
Arrancar un Job:
SQL> exec dbms_scheduler.run_job('USER.JOB');
Tomado de :
http://www.orasite.com/administracion-de-oracle/oracle-jobs-planificando-tareas-en-oracle