Pular para o conteúdo
  • Este tópico contém 13 respostas, 2 vozes e foi atualizado pela última vez 14 anos, 2 meses atrás por leandrolbs.
Visualizando 14 posts - 1 até 14 (de 14 do total)
  • Autor
    Posts
  • #101209
    leandrolbs
    Participante

      Pessoal, boa tarde.
      Problemas tipos de uma sexta feira..rssss

      Seguinte, temos uma trigger after logon.. onde nela controlamos a quantidade de usuarios logados no sistema.. com isso bloqueamos o acesso ou não;

      Até ai blz.. essa trigger roda a anos… fiz algumas alterações com selects basicos… bem basicos.. fazendo umas verificações em tabelas, tudo com nvl;

      Funciona!… só que sessões de ruinning JOB não funciona… essas sessões não conseguem sair do lugar quando disparado essa trigger…

      Quando desabilito a trigger funfa blz…

      Tenho grant em todas as tabelas do sistema, e o priv user do JOB é do proprio owner schema…

      Preciso, conseguir dar um trace no JOB, ou uma trigger pra capturar erros de logon no oracle.. sei lá..rss preciso ver onde ele está errando..

      #101211
      diegolenhardt
      Participante

        uma ideia,

        pega na dba_jobs_running, lah tem o sid, compara com o sid da sessao dentro da trigger, my_stat e ve se o SID é de um job, se for pula seus testes…

        😀

        #101218
        leandrolbs
        Participante

          A ideia foi boa..


          select to_number(count(*)) into vEhJob from dba_jobs_running djr
          where userenv('SID') = djr.SID;
          if (vEhJob != 0) then
          begin

          Mas mesmo assim não funcionou;… muito estranho…

          Alguem conhece um trace para JOB ?..

          #101221
          diegolenhardt
          Participante

            se voce rodar o codigo do JOB na mão, ele funciona?

            ta meio estranho brother…

            #101223
            leandrolbs
            Participante

              Seguinte, se executar o JOB com uma sessão já criada… (Ou seja não vai rolar o After Logon do banco)… 100% roda normal..

              Quando o proprio Oracle vai executar este JOB, ou seja criar a sessão e executar.. não rola.. o JOB não é executado.

              Melhorei o codigo:


              --Declarações
              begin
              select to_number(count(*)) into vEhJob from dba_jobs_running jr where jr.SID = userenv('SID');

              if (vEhJob = 0) then
              --minhas verificações

              end trigger;

              Mesmo assim nada.. não roda do mesmo jeito..

              #101224
              leandrolbs
              Participante

                essa função userenv será que precisa de um GRANT para user sem privilegios de DBA ?

                #101225
                diegolenhardt
                Participante

                  faz assim:

                  zelect to_number(count(*)) into vEhJob from dba_jobs_running jr where jr.SID = (zelect distinct sid from v$mystat);

                  na trigger nao tem exception…

                  tenta por uma exception que insere o sqlerrm , caso ocorra em alguma tabela de log, talvez esteja caindo lá…

                  #101226
                  diegolenhardt
                  Participante

                    outro teste, cria uma tabela qualquer com uma coluna, sid,

                    ai faz um insert nela pegando o resultado do count(*) que tu fez, pra ver se ta encontrando o jobs mesmo?

                    é job ou schedule?

                    se for schedule nao vai ter jobs_running

                    #101227
                    leandrolbs
                    Participante

                      via insert não insere nada.. já peguei varios blocos da trigger .. ele não insere nada…

                      é JOB mesmo….

                      Notei aqui que tem o campo FAILRES e no maximo que tenho é 16;

                      Será que preciso alterar este campo tambem ? pq só estou alterando a data.

                      Exemplo:


                      BEGIN
                      DBMS_JOB.change(270939, null, to_date('10/10/2011 16:46:55', 'dd-mm-yyyy hh24:mi:ss'),'null');
                      COMMIT;
                      END;

                      #101233
                      diegolenhardt
                      Participante

                        voce fica dando change?

                        nunca fiz isso, sempre agendei, o interval seria o responsavel por isso…

                        se voce desativar a trigger, ele volta a funcionar mesmo? certeza?

                        talvez possa pensar em usar o dbms_schedule, é uma evolução do dbms_job, muitoooooooo mais flexivel…

                        #101234
                        leandrolbs
                        Participante

                          disable na trigger tudo volta a funcionar;

                          Então, o JOB é criado na aplicação, são certa de 30 frontend… não compensa a manutenção para agendamento do Oracle…

                          queria mesmo era ver o erro do JOB.. Niguem manja da um trace ?..

                          🙁

                          #101235
                          diegolenhardt
                          Participante

                            http://www.google.com.br/#sclient=psy-a … 40&bih=737

                            lamento nao poder ajudar mais..

                            poderia tentar debugar via inserts dentro da trigger em uma tabela auxiliar, talvez teria que usar um procedure com autonomous transaction, porque se esta dando erro na trigger ta perdendo sua sessao…

                            outra idéia ainda, comentar o codigo da trigger e ir descomentando aos poucos, quem sabe identifica o ponto exato..

                            =/

                            #101237
                            leandrolbs
                            Participante

                              diegolenhardt muito obrigado pela atenção..

                              vo tentando outras opções + as que me passou… obrigado.

                              #101257
                              leandrolbs
                              Participante

                                nada… não consigo com nada.. com insert if a if… com raise, com when…. já fiz tudo….. é JOB da pau… disabilito a trigger funfa..

                                @Galera… help!..rsssss

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