Pular para o conteúdo
Visualizando 13 posts - 1 até 13 (de 13 do total)
  • Autor
    Posts
  • #75641
    Anônimo

      Estou precisando criar job no Oracle mas acho q o Banco não esta configurado corretamente para isso.
      Não estou localizando o dbms_job.sql para executar.
      Como posso saber se esta tudo certo e se não estiver o q devo fazer?
      Se alguem souber da uma força ai.

      #75643
      Anônimo

        lleticiaa,

        Caso você já tenha criado o job. Dê um select na view user_jobs. Lá terá informações de quando foi a ultima vez que rodou, se esta quebrado etc.

        Pra executa-lo:

        exec dbms_job.run(nº do job);

        Pra Criar:

        variable Jbno number;

        exec dbms_job.submit(:Jbno, What(Ex:Nome de sua procedure), Next_date(Rodará da proxima vez), Interval(De quanto em quanto tempo rodará));

        Ex:

        variable v number;
        exec DBMS_JOB.SUBMIT(:v,’zera;’,SYSDATE, ‘sysdate + 1440/1440′);

        Isso já basta pra você criar um job.

        Pra Altera-lo:
        Ex:

        exec DBMS_JOB.SUBMIT(43,’zera;’,SYSDATE, ‘sysdate + (10 / 24 / 60)’);

        Espero ter ajudado.

        #75644
        Anônimo

          Desculpa,

          Pra altera-lo é:

          Ex:
          exec DBMS_JOB.change(43,’zera;’,SYSDATE, ‘sysdate + (10 / 24 / 60)’);

          Abraço.

          #75646
          Anônimo

            rosterne,

            obrigada mas eu ainda não criei o job justamente pq não tenho certeza se o banco esta corretamente configurado pra isso, encontrei alguns artigos na internet q diz q o arquivo init.ora tem q conter as seguintes linhas:

            job_queue_processes, a linha job_queue_interval e a linha job_queue_keep_connections

            no meu init.ora tem apenas a primeira linha.
            Encontrei tbm q deve-se verificar se o pacote DBMS_JOB esta criado no banco de dados, e creio q não esteja, e para criá-lo deve-se executar o script dbms_job.sql q esta no $ORACLE_HOMERDBMSadmin mas la não consta o dbms_job.sql

            então essa é minha dúvida como configurar o banco para utilizar os jobs?

            #75648
            Anônimo

              Realmente lleticiaa,

              você deverá setar processos pro job.

              • alter system set job_queue_processes = 4 scope = both;

              Abraço.

              #75651
              Anônimo

                Valeu rosterne
                funcionou direitinho

                agora to com dificuldade de programar o JOB pr executar num determinado dia e numa determinada hora….rsrsrsrsrs….

                preciso q meu JOB execute todos os meses no dia 20 a meia noite.
                Se vc puder me ajudar ficarei grata.

                #75654
                Anônimo

                  lleticiaa,

                  criando o job hj, fica assim:

                  • variable v number;
                  • exec dbms_job.submit(:v, ‘(Ex:SUA PROCEDURE);’, trunc(sysdate+15)- 1/200000, ‘trunc(sysdate + 1) + 7/24’);

                  Abraço.

                  #75658
                  armandoveloso
                  Participante

                    rosterne,

                    se nao for demais, explica o que significa esses parametros todos aí:

                    trunc(sysdate+15)- 1/200000, ‘trunc(sysdate + 1) + 7/24’);

                    que tanta divisao é essa!
                    preciso dar manutencao tambem em alguns JOBS aqui no meu trabalho…

                    Obrigado.

                    #75662
                    Anônimo

                      Armando,

                      é o seguinte. Mandei muito parâmetro mesmo pq o bicho tava pegando aqui, mas nao precisava de tanto.

                      Vou explicar.

                      O correto pra esse job da lleticiaa sendo criado hj ficaria assim:

                      variable v number;

                      • exec dbms_job.submit(:v, ‘(Ex:SUA PROCEDURE);’, trunc(sysdate+12), ‘trunc(sysdate + 31)’);

                      Explicando:

                      • trunc(sysdate+12) –> Estou adcionando a data de hj mais 12 dias e truncando, ou seja, truncando a data retrocede para àszero hora.

                      00:00:00 20/05/06

                      • trunc(sysdate + 31) –> Aqui, como é o intervalo do job, estou pegando a data, adicionando 31 dias e truncando para zero horas.

                      pode ser assim também o intervalo:

                      • trunc(sysdate + 31) + 0/24′) –> sendo que o 0/24 seria a hora do dia que vc quer rodar.

                      Ex:

                      trunc(sysdate + 31) + 0/24′) –> 00:00:00 20/05/06

                      trunc(sysdate + 31) + 1/24′) –> 01:00:00 20/05/06

                      Abraço.

                      #75663
                      Anônimo

                        Só não entendi uma coisa se eu usar dessa forma:

                        trunc(sysdate+12)- 1/200000, ‘trunc(sysdate + 1) + 7/24’);

                        considerando q eu quero q rode no dia 20, todo mes após essa data eu teria q alterar o JOB?
                        Pois até onde eu sei SYSDATE pega a data atual do sistema e pensando assim então esse JOB seria executado apenas uma vez?
                        Preciso q ele funcione todos os meses por isso a dúvida.
                        Mas valeu por enquanto, as dicas ja estão sendo muito uteis pra mim.
                        🙂

                        #75664
                        Anônimo

                          lleticiaa,

                          se vc criar hj, vai rodar 20 às 0 horas(trunc(sysdate+12)) e o intervalo conta a partir do ultima vez que rodou, ou seja, como rodará só dia 20 com um intervalo trunc(sysdate + 31), a proxima execução será apenas no mês seguinte.

                          exec dbms_job.submit(:v, ‘(Ex:SUA PROCEDURE);’, trunc(sysdate+12), ‘trunc(sysdate + 31)’);

                          Abraço.

                          #75668
                          Anônimo

                            rosterne,

                            nao tem como passar o dia do mes explicitamente nao?

                            nao ha problema de colocar “31” para rodar o proximo mes nao? caso o mes tenha 30 dias, se somar 31 ele sera executado a proxima vez no dia 21 e nao 20!

                            to viajando ou acontecerá isso mesmo?

                            #75670
                            Anônimo

                              Realmente,

                              pra resolver esse problema e rodar todo dia 20 do mês, vc pode fazer assim:

                              exec dbms_job.submit(:v, ‘(Ex:SUA PROCEDURE);’, trunc(sysdate+12), ‘add_months(sysdate, 1)’);

                              Abraço.

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