denrepo

OracleASH & AWR

Top SQL in the last hour (ASH)

Statements with the most sampled activity in the last hour, split into CPU, user I/O and other waits. Each sample is roughly one second of database time.

Diagnostics Pack

Not yet verified. How scripts are tested

ora-ash-sql.sql
1CLEAR COLUMNS2SET LINESIZE 120 PAGESIZE 100 TRIMOUT ON TAB OFF3COLUMN sql_id     FORMAT A134COLUMN samples    HEADING "DB SECS"  FORMAT 999,9905COLUMN pct        HEADING "% ACTIVE" FORMAT 990.96COLUMN on_cpu     HEADING "CPU"      FORMAT 999,9907COLUMN user_io    HEADING "USER I/O" FORMAT 999,9908COLUMN other_wait HEADING "OTHER"    FORMAT 999,9909 10SELECT * FROM (11  SELECT sql_id,12         COUNT(*) AS samples,13         ROUND(100 * RATIO_TO_REPORT(COUNT(*)) OVER (), 1) AS pct,14         SUM(CASE WHEN session_state = 'ON CPU' THEN 1 ELSE 0 END) AS on_cpu,15         SUM(CASE WHEN wait_class = 'User I/O' THEN 1 ELSE 0 END) AS user_io,16         SUM(CASE WHEN session_state = 'WAITING' AND wait_class <> 'User I/O' THEN 1 ELSE 0 END) AS other_wait17  FROM v$active_session_history18  WHERE sample_time > SYSTIMESTAMP - INTERVAL '1' HOUR19    AND sql_id IS NOT NULL20  GROUP BY sql_id21  ORDER BY samples DESC22) WHERE ROWNUM <= 15;

Save it as ora-ash-sql.sql and run it with SQL> @ora-ash-sql.

Open in denrepo

More Oracle scripts: ASH & AWR