Para melhor visualização, recomendo resolução de no mínimo 1280 x 800 e navegador Mozilla Firefox


quarta-feira, 19 de dezembro de 2007

JOBS no Oracle não são executados automaticamente. O que fazer?

Por Eduardo Legatti

Olá,

Recentemente um membro do forum OTN postou um estranho problema (ver a thread Jobs don't running automatically) relacionado à execução de tarefas usando o pacote DBMS_JOB no Oracle 9i. Apesar do parâmetro job_queue_processes estar setado corretamente com um valor maior que zero, os novos JOBS criados não eram executados automaticamente. De acordo com o Note:313102.1 do Oracle Metalink que mostra algumas ações que devem realizadas para poder solucionar o problema, e segundo note, este problema foi reportado na versão Oracle Server - Enterprise Edition - Version: 9.2.0.4.0.

No caso do problema referente à thread, o problema só foi resolvido quando o servidor foi reiniciado e isso porque segundo o note, se o servidor estiver no ar ininterruptamente por mais de 497 dias (UPTIME > 497 days), então haverá a possibilidade de que os JOBS não sejam executados automaticamente (bug 3427424).

A novidade é que me deparei com este problema também na versão Oracle Database 10g Enterprise Edition Release 10.1.0.2.0, e apesar de o banco de dados estar funcionando perfeitamente e os JOBS agendados estarem automaticamente sendo executados, novos JOBS que fossem JOBS criados não eram executados automaticamente. Além do mais, mesmo que executasse o procedimento DBMS_JOB.RUN para executar o JOB, o mesmo era agendado para a próximo horário, mas não era executado automaticamente.


Em resumo, o problema somente foi resolvido quando eu reinicializei o parâmetro JOB_QUEUE_PROCESSES como mostrado abaixo:
  • alter system set job_queue_processes=0;
  • aguardei por 1 minuto ...
  • alter system set job_queue_processes=10;

Após executado o procedimento acima, os novos JOBS criados foram agendados e executados normalmente. Pelo fato deste problema ter ocorrido também na release 1 do Oracle 10g, achei importante relatar o ocorrido e enviei um e-mail para a equipe do Oracle Metalink reportando o problema.

Após o envio, obtive a resposta abaixo:


"Thank you for the feedback.

We have sent your comments to the support team that
created this document. They will review the information
and update the Note as necessary.

Regards
"

No mais, se alguém tiver esse mesmo problema, eu sugiro tentar primeiro reinicializar o parâmetro JOB_QUEUE_PROCESSES, antes de tentar uma outra solução como por exemplo, efetuar um shutdown no banco de dados e inclusive no servidor.



2 comentários:

Anônimo disse...

Sensacional Eduardo, passo por esse problema diariamente. E como medida eu simplesmente reagendo meu JOB que esta com problema, removo através da DBMS_JOB e reagendo através da mesma, assim ele volta a sua rotina de execuções, mas ha casos em que mesmo assim não funciona.

Abração.
David Ricardo
drdba@uol.com.br

Eduardo Legatti disse...

Olá David,

Por falar nisso, eu não cheguei a realizar testes no Oracle 10g rel 2 e Oracle 11g rel 1 para ver se esse tipo de problema ainda ocorre.

No mais, acho que à partir do Oracle 10g, o ideal mesmo é utilizar o pacote DBMS_SCHEDULER

Abraços ...

Postagens populares