- Este tópico contém 9 respostas, 6 vozes e foi atualizado pela última vez 17 anos, 2 meses atrás por
jspaulonci.
-
AutorPosts
-
7 de janeiro de 2009 às 8:27 pm #84566
feliperenz
ParticipanteTenho 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 ?
7 de janeiro de 2009 às 9:06 pm #84567Marcio68Almeida
ParticipanteNã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 ?7 de janeiro de 2009 às 9:22 pm #84569feliperenz
ParticipanteBom o quero saber eh alguem rodou um script não deu commit nem rollback, tenho como ver que alguma transação não commitou?
7 de janeiro de 2009 às 9:42 pm #84570vieri
ParticipanteVerifique as sessões ativas.
7 de janeiro de 2009 às 9:44 pm #84571Marcio68Almeida
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)7 de janeiro de 2009 às 9:53 pm #84573David Siqueira
ParticipanteCara 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!!!
Abcs8 de janeiro de 2009 às 4:18 am #84576Ricardo Portilho Proni
ParticipanteOi.
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;
8 de janeiro de 2009 às 4:35 pm #84583feliperenz
ParticipanteRicardo,
Realmente era isso que precisava, obrigado.8 de janeiro de 2009 às 7:39 pm #84596jspaulonci
ParticipanteTente 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
8 de janeiro de 2009 às 7:50 pm #84597jspaulonci
Participanteselect *
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
-
AutorPosts
- Você deve fazer login para responder a este tópico.