Executar JOB até Determinado Período

Visualizando 11 posts - 1 até 11 (de 11 do total)
  • Autor
    Posts
  • #95069
    Avatar de GirinoGirino
    Participante

    Olá..
    Bom Dia a Todos..! 8)

    Gostaria de saber se é possível executar um JOB no Oracle apenas até determinado período do dia.

    Desenvolvi um JOB que é executado minuto a minuto.
    Quero que este job rode todos os dias apenas no período das 06:00 da manhã até as 24:00.

    É possível? 🙄

    Segue sql do job abaixo:

    DECLARE
    job NUMBER;
    BEGIN
    DBMS_JOB.SUBMIT(job,’begin p_importa_pedidos; END;’,sysdate,’sysdate+1/1440′);
    END;
    /

    Muito Obrigado..!! 😀

    Renato

    #95070
    Avatar de IshiiIshii
    Participante

    Olá,

    Se for versão 10g ou superior, melhor usar o DBMS_SCHEDULER que tem mais opções que o JOB. Inclusive essa que você necessita.

    []s Ishii

    #95072
    Avatar de Leonardo LitzLeonardo Litz
    Participante

    No 9i a gente faz rodar ele o dia todo….

    E dentro da rotina que ele chama, colocamos um if para verificar se esta no periodo desejado, caso não, sai da rotina se executa-lá…

    Mas se vc utilizar o 10g utilize o DBMS_SCHEDULER mesmo que é melhor….

    Vlw Leonardo Litz

    #95073
    Avatar de GirinoGirino
    Participante

    Olá..!! 😀

    Gostaria muito se possível, um exempo com o código que eu passei utilizando o DBMS_SCHEDULER.

    Desde já, muito obrigado. 😆

    Renato

    #95076
    Avatar de BogosBogos
    Participante

    Olá Girino
    Dá uma lida nesse documento da própria Oracle que fala sobre o dbms_scheduler
    http://download.oracle.com/docs/cd/B193 … m#ARPLS138

    😉

    #95077
    Avatar de GirinoGirino
    Participante

    Olá Pessoal
    Bom Dia! Tudo Bem? 😀

    Cheguei na empresa hoje e fui verificar a execução do job.
    Parou de funcionar igual o dia anterior.
    No primeiro dia parou as 03:24 da manhã e ontem parou as 21:00 hs.
    Dei um select na tabela USER_JOBS e os campos BROKEN esta = N e FAILURES esta = 0
    O que será que está acontecendo? Tenho que configurar alguma coisa no banco?

    Alguém já pasou por esse problema? 😥

    To precisando mesmo resolver este problema. 😳

    abraços e obrigado por qualquer ajuda..!! 😀

    Renato

    #95079
    Avatar de BogosBogos
    Participante

    Girino

    use normalmente sua job que você mostrou no primeiro post;

    DECLARE
    job NUMBER;
    BEGIN
    DBMS_JOB.SUBMIT(job,'begin p_importa_pedidos; END;',sysdate,'sysdate+1/1440');
    END;
    /

    Ela será executada de minuto em minuto durante as 24hrs normalmente, porém, para não deixar a p_importa_pedidos funcional apenas para a job, você poderia criar outra procedure (p_job_importa_pedidos) e nela você trata o tempo, se o sysdate estiver entre 6 da manha e 13:59, ela chama a p_importa_pedidos, senão não faz nada.

    É uma solução, a outra é utilizar o DBMS_SCHEDULER.

    Abraço!

    #95080
    Avatar de GirinoGirino
    Participante

    Olá Bogos..!!
    Bom Dia! 8)

    Então, o meu problema agora é com relação ao JOB que esta parando de rodar automaticamente durante a noite e quando eu chego pela manhã aqui na empresa esta tudo parado.

    Você sabe porque isso está ocorrendo?

    Muito Obrigado. 😀

    Renato 😉

    #95081
    Avatar de BogosBogos
    Participante

    Entendi. Você está usando o DBMS_SCHEDULER? Se for o caso pode ser que está feita de maneira incorreta fazendo com que ela pare de executar.
    Caso não, então verifique o seguinte:

    A procedure que a job chama pode estar demorando mais do que 1 minuto para executar, sendo assim a job entra em fila e quebra causando a paralização da mesma.
    Pode ser também algum objeto inválido ou que fique inválido na execução da job (algum erro de chaves, enfim).

    Utilize a seguinte instrução para verificar a execução da job:


    select to_char(last_date, 'dd/mm/rr-hh24:mi:ss') last_date
    2 , to_char(next_date, 'dd/mm/rr-hh24:mi:ss') next_date
    3 from user_jobs
    4 where job=26
    5 /
    select to_char(last_date, 'DD/MM/RRRR HH24:MI:SS') last_date,
    to_char(next_date, 'DD/MM/RRRR HH24:MI:SS' ) next_date
    from user_jobs
    where job=NRO_DA_SUA_JOB

    😉

    #95082
    Avatar de GirinoGirino
    Participante

    Olá Bogos..!! 😀

    Estou verificando essa possibilidade, já que a procedure carrega pedidos de uma Base de Dados Informix e nessa base é realizado um shutdow durante o período noturno.

    Só ahei estranho que parou em um dia as 03:27 da manhã e ontem parou as 21:37 da noite e o shutdown é realizado em outro horário.

    De qualquer forma, vou aumentar o tempo de execução do JOB durante a noite e verificar o resultado.

    abraço e obrigado pelas dicas..!! 😀

    Renato 8)

    #95088
    Avatar de BogosBogos
    Participante

    Qualquer coisa posta ae!
    Se descobrir o que era, não deixa de postar a solução 😉

    Abraços

Visualizando 11 posts - 1 até 11 (de 11 do total)
  • Você deve fazer login para responder a este tópico.
plugins premium WordPress