› Fóruns › Banco de dados Oracle › Agendador de Tarefas no Oracle 9i › Agendador de Tarefas no Oracle 9i
O problema não estava na procedure, criei uma simples só para testar da mesma for o Job para de executar na 16° vez.
Porém eu encontrei uma solução para o o problema da seguinte forma:
Existe um job 1 que executa uma procedure X a cada 5 min sendo que na 16° vez ela para e o status fica com broken = Y.
Solução:
Criei o job 2 que executa a procedure Y onde a mesma tem finalidade de verificar se o status do Job 1 está como broken = Y, se estiver ela executa a procedure do pacote DBMS_JOB:
DBMS_JOB.BROKEN(1, FALSE, sysdate+(3600 * ( 2/60 ) )/86400);
COMMIT;
que muda o status do Job 1 para broken = N e agenda uma nova execução.
Lembrando que o Job 2 só irá rodar 16x. para que o mesmo não pare também, no final da procedure X faço uma checagem verifico se o status do job 2 está broken = Y, caso esteja executa a procedure do pacote DBMS_JOB:
DBMS_JOB.BROKEN(2, FALSE, sysdate+(3600 * ( 2/60 ) )/86400);
COMMIT;
que muda o status do Job 2 para broken = N e agenda uma nova execução. Ficando assim em loop infinito, um job revalidando o outro e garantindo assim a execução da procedure.
Se alguém passar por uma situação parececida, a solução que encontrei foi essa, espero que ajude.
1 abraço,
Hitotuzi