Pular para o conteúdo

Fóruns Banco de dados Oracle Agendador de Tarefas no Oracle 9i Agendador de Tarefas no Oracle 9i

#98289
Hitotuzi
Participante

    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