terça-feira, 29 de setembro de 2009

Identificando as SQL's em Execução

Olá, tudo bem com vocês?


Hoje resolvi postar alguns dos scripts que uso para administrar meus ambientes, são scripts que nos mostram a sessão que está executando determinado SQL e quantas linhas aquela determinada instrução processou até então, bem como suas atividades por data e hora , vejam:



SQL Script - Versão 8i


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.last_active_time,
t.first_load_time,
-- t.last_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;

Nota: o parametro de entrada para a execução é a SID da sessão em questão que será analisada, ou tecle "ENTER" para que todas sejam mosradas.

SQL Script - Versão 10g


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.last_active_time,
t.first_load_time,
t.last_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;

Bem , é isso pessoal, espero que gostem dessa ferramenta para aqueles que não possuem ambientes gráficos para analisar certas situações.

Obrigado mais uma vez a todos que apreciam meu BLOG.


Abraço!!!!

2 comentários:

  1. Eae Mestre David! :)

    Muito interessante esse post, particularmente trabalho com ambiente gráfico, mas uma vez precisei dar uma ajuda em um ambiente que não possuía.

    Foi osso para trabalhar, agora que já sabemos identificar esses tipos de informação fica mais facil de resolver.

    Muito útil.

    Um abraço

    ResponderExcluir
  2. David, muito bom esse tópico vai ser de grande utilidade para mim fazer algumas coisas aqui no meu banco.

    Cara a propósito, kd aquele tópico que eu tinha comentado pela primeira vez?

    Abraços

    ResponderExcluir

Para aqueles que apreciaram o Post, comentem, deixem suas opiniões e criticas.