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!!!!