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

      Tenho uma duvida, por exemplo rodo n scripts em sessões separadas, sem dar commit, gostaria de saber como posso saber o que ainda não foi commitado, existe isso ?

      #84567
      Marcio68Almeida
      Participante

        Não tem como saber o se passa em outra sessão.
        Você pode acompanhar pelas views V$ e DBA_
        Mas você tem que ser um pouco mais específico o que exatamente você quer ?

        #84569
        feliperenz
        Participante

          Bom o quero saber eh alguem rodou um script não deu commit nem rollback, tenho como ver que alguma transação não commitou?

          #84570
          vieri
          Participante

            Verifique as sessões ativas.

            #84571
            Marcio68Almeida
            Participante

              [quote=”feliperenz”:htmm9xsg]Bom o quero saber eh alguem rodou um script não deu commit nem rollback, tenho como ver que alguma transação não commitou?[/quote]
              Se a sessão está inativa por um determinado tempo com o mesmo SQL TEXT é por que não foi finalizada ou está aguardando interação.
              Se bem que é necessário saber se não há LOCK entre transações que possam estar impedindo o prosseguimento do processo (se bem que se houver LOCK a sessão estará ativa)

              #84573
              David Siqueira
              Participante

                Cara tenta rodar esse script aqui que eu te mando abaixo, vc acompanha pelos executions da query em questão que estara rodando em outra sessão, se os executions ficarem estaticos, se as linhas processadas também não mudarem, tente identificar se não alguma outra sessão segurando seu objeto e impedindo você de executar a sua query :

                accept sid prompt “Sid do usuario ou (Enter)=Todos: ”
                set ver off
                col data new_value data noprint
                col hora new_value hora noprint
                set term off pause off
                –select to_char(sysdate,’ddmmyy’) data from dual;
                –select to_char(sysdate,’hh24miss’) hora from dual;
                set term on pause oFF
                –spool vsqlexec.lst
                break on sid on osuser
                col sid format 999
                col osuser format a10 wra
                col sql_text format a40 wra
                col executions format 9999999999 heading ‘EXECUTE’
                col loads format 999999
                col invalidations format 999 heading ‘INV.’
                col users_executing format 9999 heading ‘USERS|EXEC.’
                col parse_calls format 999999999 heading ‘PARSE|CALLS’
                col sorts format 999
                col version_count format 9999 heading ‘VERSION|COUNT’
                select s.sid,s.osuser,t.sql_text,t.rows_processed,t.first_load_time,t.users_executing,t.version_count,t.executions,t.loads,t.invalidations,t.parse_calls,t.sorts
                from sys.v_$sqlarea t, sys.v_$session s
                where t.hash_value = s.sql_hash_value
                and t.address = s.sql_address
                –and (‘&sid’ is null or s.sid in (&sid))
                and (‘&sid’ is null or s.sid = ‘&sid’)
                order by s.sid
                /

                Espero ter ajudado!!!
                Abcs

                #84576
                Ricardo Portilho Proni
                Participante

                  Oi.

                  Aqui você pode ver as sessões que possuem DML que ainda não sofreram COMMIT ou ROLLBACK.

                  SELECT S.SID FROM V$TRANSACTION T, V$SESSION S WHERE S.SADDR = T.SES_ADDR;

                  #84583
                  feliperenz
                  Participante

                    Ricardo,
                    Realmente era isso que precisava, obrigado.

                    #84596
                    jspaulonci
                    Participante

                      Tente pela v$transaction, tem uma coluna lá que dá pra fazer join com a v$session, aí acho que dá pra chegar onde vc quer

                      Spaulonci

                      #84597
                      jspaulonci
                      Participante

                        select *
                        from v$session
                        where saddr in (select ses_addr
                        from V$transaction
                        where status=’ACTIVE’)

                        Esta query irá te ajudar a descobrir se existem transações sem commit ou não .

                        Roda com rule de DBA, esta query foi feita para 10g.

                        Spaulonci

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