Inicio » Oracle » Jobs » Oracle Scheduler

Oracle Scheduler

Oracle Scheduler es un herramienta que permite aejecutar trabajos de manera periódica autmomáticamente.

Crear un trabajo:

Se utiliza el procedimiento create_job

Aquí tenemos un ejemplo de un job que llama a un procedimiento externo. Este job asume que existe un ejecutable, /users/oracle/scripts/delete_logs.sh, que se encargará de borrar los logs antiguos

BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'DELETE_LOGS',
job_type => 'EXECUTABLE',
job_action => '/users/oracle/scripts/delete_logs.sh ',
repeat_interval => 'FREQ=DAILY;BYHOUR=14;BYMINUTE=11',
job_class => '"DEFAULT_JOB_CLASS"',
auto_drop => FALSE,
comments => 'Delete old files',
enabled => TRUE);
END;
/

Vamos a explicar algunos de los parámetros:

JOB_TYPE: Puede ser de los siguiente tipos: PROCEDURE, PLSQL_BLOCK oEXTERNA

REPEAT_INTERVAL : En este caso FREQ=DAILY;BYHOUR=14;BYMINUTE=11. En este caso todos los días las 2:11 p.m La sintaxis de este parámetro es bastante compleja, se pueden encontrar múltiples ejemplos en  The Oracle Database PL/SQL Packages and Types Reference guide

JOB_CLASS Normalmente se utliza para proporcionar un método de los jobs automáticamente hereden  atributos de esa clase. En este caso hemos utilizado la de por defecto.

AUTO_DROP Este parámetro le indica a oracle que no borre el job  después de ejecutarlo

Como ver los detalles del job

Para ver cómo está configurado se utiliza la vista DBA_SCHEDULER_JOBS

SELECT
  job_name
 ,last_start_date
 ,last_run_duration
 ,next_run_date
 ,repeat_interval
FROM dba_scheduler_jobs
WHERE job_name='<nombre_job>';

Cada vez que el job se jecuta se guarda un registro en DBA_SCHEDULER_JOB_LOG.

SELECT
 job_name
,log_date
,operation
,status
FROM dba_scheduler_job_log
WHERE job_name='<nombre_job>';

Cómo modificar el periodo de retención de un log

Por defecto Oracle Scheduler guarda 30 días del historio se puede moficiar de la siguiente manera:

SQL> exec dbms_scheduler.set_scheduler_attribute('log_history',15);

Para limpiar todo el histórico del job:

SQL> exec dbms_scheduler.purge_log();

Modificar un job:

Se puede modificar los atributos de un job mediate el procedimiento SET_ATTRIBUTE. Un ejemplillo

BEGIN
  dbms_scheduler.set_attribute(
    name=>'<nombre_job>'
   ,attribute=>'repeat_interval'
   ,value=>'freq=weekly; byday=mon');
END;
/

Parar un job:

SQL> exec dbms_scheduler.stop_job(job_name=>'<nombre_job>');

Habilitarlo o  deshabilitarlo:

exec dbms_scheduler.disable('DELETE_LOGS');
exec dbms_scheduler.enable('DELETE_LOGS');

Borrarlo:

exec dbms_scheduler.drop_job('DELETE_LOGS');

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s