› Fóruns › Banco de dados Oracle › Quais os motivo para um JOB parar de reagendar? › Quais os motivo para um JOB parar de reagendar?
Olá,
O DBMS_SCHEDULER tem mais opções que o Job da Oracle. Por exemplo: é possível agendar em dias específicos como todo dia 1, 19 e 30 de cada mês. No Job seria necessário criar vários Jobs e isso está atrelado ao JOB_QUEUE_PROCESSES, mas no DBMS_SCHEDULER não há essa restrição. Outra vantagem do Scheduler é os logs que são muito mais ricos em informações, todas as execuções do Scheduler são visíveis nas views user_scheduler_job_log ou dba_scheduler_job_log (se tiver essa permissão para a view dba_…).
No Job, quando entra em “broken” ele fica suspenso até que seja seja ativado novamente, o Scheduler registra a falha na view de log mas mantém o agendamento ativo (mesmo que continue o erro) até que seja arrumado.
Sugiro a leitura da documentação da Oracle sobre o DBMS_SCHEDULER que é muito rica e extensa em exemplos. http://bit.ly/a5Ty2s Link da Documentação.
Lembrando que é uma feature a partir do Oracle 10g. Segue abaixo apenas um exemplo da utilização chamando uma store procedure que está sendo rodada todo dia 1 de cada mês as 2:30hs a.m.
begin
DBMS_SCHEDULER.create_job ( job_name => 'nome do Job',
job_type => 'STORED_PROCEDURE',
job_action => 'pAjusteCustoEstoqProducao',
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=monthly; interval=1; bymonthday=1; byhour= 2; byminute=30',
end_date => NULL,
enabled => TRUE,
comments => 'Job Carrega os Saldos de Estoque Producao');
end;
/
Explicando rapidamente o repeat_interval:
Freq: Frequencia monthly (mensal) poderia ser hourly (por hora) …
interval: intervalo de repetição 1, a cada um mês pois a frequencia é mensal se eu quisesse rodar bimestralmente o valor seria 2
bymonthday: o dia do mês que será executado, aqui posso informar vários dias
byhour: horário da execução, tb posso informar vários
byminute: minuto preciso da execução…idem aos outros…
Há muito mais ainda… melhor ler a documentação e fazer uns testes…enjoy!!!
[]s Ishii