Pular para o conteúdo
  • Este tópico contém 7 respostas, 5 vozes e foi atualizado pela última vez 12 anos, 2 meses atrás por Avatar de Regis AraujoRegis Araujo.
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #101982
    Avatar de GirinoGirino
    Participante

      Boa Tarde a Todos.! 8)

      Preciso de uma ajuda. 💡

      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 1:

      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 💡

      Muito Obrigado..!! 😉

      Renato 😀

      #101984
      Avatar de felipegfelipeg
      Participante

        Duas opções

        Coloque, no final da primeira procedure, a criação do segundo JOB ou a procedure que este JOB chama.

        Assim você sempre terá a certeza de que rodará só quando o primeiro terminar.

        Atenciosamente,
        Felipe.

        #101987
        Avatar de GirinoGirino
        Participante

          Olá Felipe..!! 8)

          begin
          sys.dbms_job.submit(job => :job,
          what => ‘begin TESTE; END;’,
          next_date => to_date(’01-12-2011 15:26:14′, ‘dd-mm-yyyy hh24:mi:ss’),
          interval => ‘sysdate+5/1440’);
          commit;
          end;
          /

          O Job acima executa a procedure TESTE de 5 em 5 minutos.

          Como ficaria no exemplo que você passou.
          Tenho dúvidas ainda..!!

          Obrigado..!! 😆

          Renato

          #101989
          Avatar de felipegfelipeg
          Participante

            Girino,

            Você precisa que ao término da execução da procedure TESTE ele chame o segundo job correto?

            Então, uma opção é:
            – Criar uma sequence pro JobID
            – No final da procedure de TESTE chamar o segundo job usando o isubmit


            dbms_job.isubmit(job => , what => , next_date => sysdate);

            Entendeu?
            Outra opção é, caso seja uma procedure e sempre seja chamada, só usar a próxima procedure no final do bloco da procedure de TESTE.

            OBS: Com o scheduler é mais fácil de chamar 8)

            Atenciosamente,
            Felipe.

            #101990
            Avatar de rmanrman
            Participante

              @Girino


              Se o seu ambiente tem Grid Control, use a função MultiJobs, pois consegue definir através dele execução de jobs posteriores caso o job antecessor execute com sucesso.

              Abraços,


              Rodrigo Almeida
              DBA Oracle

              Outra solução, tudo é questão de abstração. Você tem 2 jobs que 1 depende do sucesso de outro, abstraindo você tem apenas 1 jobs com uma condição, não 2 jobs. 😆

              #101991
              Avatar de felipegfelipeg
              Participante

                Exato @Rman,

                As vezes não consigo me fazer entender hehe

                Atenciosamente,
                Felipe.

                #102004
                Avatar de David SiqueiraDavid Siqueira
                Participante

                  Felipe/Rman

                  Caso você não possua no seu ambiente um GRID para auxilia-lo com essas criações, segue um liink que pode ajuda-lo a fazer de maneira manual a criação dos MULTIPLE JOB’s no banco.

                  http://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse002.htm

                  Abraço.

                  #102026
                  Avatar de Regis AraujoRegis Araujo
                  Participante

                    Senhores.. boa noite..!

                    Bom.. antes de mais nada.. seria muito bom informar qual a sua versão de banco de dados..!!

                    Para este tipo de situação, também pode utilizar as CHAINS.. que são encadeamentos de jobs/procedimentos que vc configura para iniciarem após o retorno de algum outro job/procedimento, desta maneira você pode controlar todo o processo.. onde em caso de sucesso da execução do primeiro job.. ele inicia o segundo.. ou em caso de falha.. ele manda um aviso.. Ou seja.. vc configura regras para a execução de cada passo..

                    De uma lida sobre isto.. creio que pode lhe ajudar muito..!!

                    Abraços..!

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