Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renato_2009

JOB no ORACLE

Recommended Posts

Boa Tarde a Todos.! B)

 

Preciso de uma ajuda. :ermm:

 

Criei um job no oracle para executar de 5 em 5 minutos. Porém as vezes esse tempo não é suficiente para executar a procedure que insere dados em uma tabela e acaba locando a mesma e travando tudo.

 

Não tenho um tempo exato, depende as vezes do que esta sendo processado no servidor. Pode ser rápido ou não.

 

A minha pergunta é a seguinte:

 

Dúvida: :huh:

 

Tem como eu definir um job para executar a todo momento assim que termine o job do processo anterior. Desse modo eu não teria que definir o tempo e ele só iniciaria o próximo job após o término do mesmo e não locaria a tabela.

 

Qualquer outra idéia seria bem vinda para resolver meu problema :joia:

 

Muito Obrigado..!! :clap:

 

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

O tempo de intervalo está baixo, aumente.

 

OU

 

Mantenha o tempo mas.

 

Crie uma tabela de controle, só terá um registro

 

CONTROLE_JOB
------------
STATUS NUMBER(1);

 

a rotina job faz algo assim

 

DECLARE
 VN_C NUMBER;
BEGIN
 SELECT COUNT(*) INTO VN_C FROM CONTROLE_JOB WHERE STATUS=1;
 IF VN_C = 0 THEN
   UPDATE CONTROLE_JOB SET STATUS =1;
   /*
   FAZ O QUE O JOB DEVE FAZER
   */
   UPDATE CONTROLE_JOB SET STATUS =0;
 END IF;
END;

 

Se o JOB estiver "no ar"ainda não fará nada até a próxima execução com ele "fora".

 

OU

 

Não use JOB e deixe a Procedure eternamente no ar, uma chamada recursiva eterna (ruim).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como são as coisas, hoje precisei criar um JOB nestas condições e me lembrei deste Post.

 

Fiz a tabela de controle.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.