Mittwoch, Juli 07, 2010

current SQL

Zu meinen Hobbies gehört das Schreiben und Überarbeiten von SQL-Scripts. Aufgrund der häufigen Überarbeitungen ist es eigentlich nicht sinnvoll, solche Scripte in einem statischen Blog unterzubringen, aber da der Blog relativ gut erreichbar ist, während meine google-site in gesicherten Netzen oft geblockt wird, bringe ich dieses doch einmal hier unter. Besonders aufregend ist es nicht, aber für mich ziemlich hilfreich: zunächst suche ich mir die Module aus, die SQL-Queries abgesetzt haben, und dann folgt eine Query auf v$sql, die man auf ein Modul, ein Schema, eine Laufzeit in Sekunden oder eine SQL_ID einschränken kann.

set pagesize 100
column module format a60
column SORTS format 9999999
column row_cnt format 9999999
column execs format 99999999
column substr_sql format a50
column parsing_schema_name format a30
column row_cnt format 999999999

select module, count(*)
  from v$sql
 group by module
 order by module;

select to_char(sysdate, 'hh24:mi:ss') curtime
     , parsing_schema_name
     , sql_id
     , child_number
     , substr(sql_text, 1, 100) sql_text
     , executions
     , round(elapsed_time/1000000) elapsed_sec
     , round(elapsed_time/case when executions = 0 then 1 else executions end /1000000) ela_sec_per_exec
     , buffer_gets
     , trunc(buffer_gets/decode(executions, 0, 1, executions)) lio_per_exec
     , rows_processed
     , round(cpu_time/1000000) cpu_time
     , round(user_io_wait_time/1000000) user_io_wait_time
     , round(plsql_exec_time/1000000) plsql_exec_time
     , round(java_exec_time/1000000) java_exec_time
     , to_char(last_active_time, 'dd.mm.yyyy hh24:mi') last_active_time
     , parse_calls
     , disk_reads
     , direct_writes
     , fetches
     -- , serializable_aborts
     -- , end_of_fetch_count
     -- , loads
     -- , version_count
     -- , invalidations
     -- , avg_hard_parse_time
     -- , application_wait_time
     -- , concurrency_wait_time
     -- , cluster_wait_time
     , px_servers_executions
     , sorts
     , sharable_mem
     -- , total_sharable_mem
     , typecheck_mem
  from v$sql
 where upper(module) like upper('%&module%') 
   and parsing_schema_name like upper('%&schema%')
   and round(elapsed_time/1000000) >= nvl('&secs', 0)  
   and sql_id like '%&sql_id%'
 order by elapsed_time desc;

Keine Kommentare:

Kommentar veröffentlichen