- Este tópico contém 9 respostas, 2 vozes e foi atualizado pela última vez 15 anos atrás por
Hitotuzi.
-
AutorPosts
-
10 de fevereiro de 2011 às 7:05 pm #98209
Hitotuzi
ParticipanteBom dia!
Alguém sabe se existe algum Agendador de Tarefas no Oracle 9i, e como utilizá-lo?
1 Abraço,
Hitotuzi
10 de fevereiro de 2011 às 7:19 pm #98211Ishii
ParticipanteOlá,
Agendador, tipo o job do Oracle que pode ser programado?
[]s Ishii
10 de fevereiro de 2011 às 7:24 pm #98213Hitotuzi
Participante[quote=”Ishii”:1ndmpjxn]Olá,
Agendador, tipo o job do Oracle que pode ser programado?
[]s Ishii[/quote]
Isso meu amigo preciso executar uma procedure a cada 5 minutos no meu banco, vc pode me ajudar?
10 de fevereiro de 2011 às 7:42 pm #98215Ishii
ParticipanteOlá,
Use o DBMS_JOB:
http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/jobq.htm#9499
Prestando atenção no item Job Execution Interval onde vai te mostrar como resolver os intervalos de execução…
[]s Ishii
ps: prefiro o Scheduler mas isso é uma feature do Oracle 10g em diante…
11 de fevereiro de 2011 às 11:29 pm #98227Hitotuzi
Participante[quote=”Ishii”:1gembp4f]Olá,
Use o DBMS_JOB:
http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/jobq.htm#9499
Prestando atenção no item Job Execution Interval onde vai te mostrar como resolver os intervalos de execução…
[]s Ishii
ps: prefiro o Scheduler mas isso é uma feature do Oracle 10g em diante…[/quote]
OBRIGADO MEU AMIGO, FUNCIONOU
1 ABRAÇO
14 de fevereiro de 2011 às 5:38 pm #98234Hitotuzi
ParticipanteEstá ocorrendo a seuinte situação, como configurei o dbms_job para executar uma procedure a cada 5 min, no entanto ele faz isso uma qtde de vezes e demos para alterando automáticamente o next_date para 1/1/4000
Alguém sabe o porquê?
14 de fevereiro de 2011 às 8:33 pm #98237Ishii
ParticipanteOlá,
O status fica Broken? Quanto tempo demora a execução da procedure? Se for superior aos cinco minutos, ela pode estar atrapalhando o próximo job por deixar um lock (se tiver) possível…
[]s Ishii
14 de fevereiro de 2011 às 10:04 pm #98238Hitotuzi
ParticipanteSim o status fika Broken = Y. Só existe esse Job, ele executa a cada 5 min porém após 16 vezes o campo next_date da tabela dba_jobs recebe o valor 1/1/4000 e o status fica Broken = Y não executa mais
15 de fevereiro de 2011 às 12:30 am #98240Ishii
ParticipanteOlá,
Como o JOB é meio chato (prefiro o SCHEDULER) acho melhor você colocar um log na procedure que o JOB roda para ver o problema real, pode ser que um JOB cause um lock na próxima execução e aí fica um caos… Como o log do JOB não é muito preciso, será necessário analisar isso na própria rotina criada.
Tente rodar a cada 10 minutos e ver se não ocorre o Broken….analise novamente a procedure e veja onde pode ocorre algum lock…
[]s Ishii
17 de fevereiro de 2011 às 11:46 pm #98289Hitotuzi
ParticipanteO 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
-
AutorPosts
- Você deve fazer login para responder a este tópico.