Acertar horário do NextDate do Job.

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
Rafael de oliveira
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qui, 27 Mar 2014 1:55 pm
Analista Desenvolvedor de Sistema
Metta Informática - Lençóis Paulista

Boa tarde, criei um Job que vai executar uma procedure.

Quero que ele execute de 30 em 30 minutos.

Selecionar tudo

begin
  sys.dbms_job.change(job => 66,
                      what => 'LOG_RES_PROD_FECHADO_RESUMO;',
                      next_date => to_date('27-03-2014 14:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'SYSDATE + 1/48');
  commit;
end;
Atualmente ele executa da seguinte forma, começa as 14:00:00, o próximo ele joga para 14:30:06, depois 15:00:13 e assim por diante.
Ele muda de meia em meia hora porém esta acrescentando o tempo de execução a próxima execução.
Gostaria que não fosse assim, que executasse sempre que em horas certas 14:00:00, 14:30:00 e assim por diante.

O que estou fazendo de errado na criação de Job e o que devo fazer para corrigir?

Obrigado pela atenção de todos.
bride
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qua, 24 Set 2008 11:00 pm
Localização: Belo Horizonte - MG
Bride
OCA Oracle PL/SQL Developer Certified Associate

Rafael boa tarde, da uma lida nesse link aqui, talvez possa te ajudar


https://community.oracle.com/thread/885 ... 0&tstart=0
Avatar do usuário
Rafael de oliveira
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qui, 27 Mar 2014 1:55 pm
Analista Desenvolvedor de Sistema
Metta Informática - Lençóis Paulista

Bom dia, montei conforme o exemplo que você me passou, porém ele continua acrescentando a hora o tempo de execução.

Veja no código abaixo, como já esta o Next_Date:

Selecionar tudo

begin
  sys.dbms_job.submit(job => :job,
                      what => 'LOG_RES_PROD_FECHADO_RESUMO;',
                      next_date => to_date('28-03-2014 09:01:24', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'SYSDATE+30/1440');
  commit;
end;
O correto seria estar em 09:00:00. De ontem para hoje ele passou 1:24min.

Tentei colocar o intervalo dentro de um Trunc, ficando assim : interval => 'TRUNC(SYSDATE + 30/1440');
Mas ele da um erro dizendo que deve passar um valor de tempo futuro.

Vocês tem alguma outra idéia?
Obrigado pela ajuda.
Avatar do usuário
Rafael de oliveira
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qui, 27 Mar 2014 1:55 pm
Analista Desenvolvedor de Sistema
Metta Informática - Lençóis Paulista

Boa tarde,

Fiz o o interval do JOB da forma citada abaixo no código e deu certo.

Selecionar tudo

begin
  sys.dbms_job.submit(job => :job,
                      what => 'LOG_RES_PROD_FECHADO_RESUMO;',
                      next_date => to_date('31-03-2014 15:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'trunc(SYSDATE,''HH24'')+((floor(to_number(to_char(SYSDATE,''MI''))/30)+1)*30)/(24*60)');
  commit;
end;
Obrigado pela ajuda de todos e fica o código para ajudar os outros.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes