Back to Performance Tuning sql

2 Active Session History Longest Wait Times

2_active_session_history_longest_wait_times.sql

Disclaimer: This script is provided for educational and learning purposes. Review it carefully, test in a non-production environment, confirm privileges, and validate impact before using it in production.
SET PAGESIZE 200
SET LINESIZE 260
SET TRIMSPOOL ON
SET TAB OFF
SET VERIFY OFF
SET FEEDBACK ON

COLUMN sample_time FORMAT A20 HEADING 'SAMPLE_TIME'
COLUMN sql_id FORMAT A13 HEADING 'SQL_ID'
COLUMN username FORMAT A20 HEADING 'USERNAME'
COLUMN sql_text FORMAT A100 HEADING 'SQL_TEXT'
COLUMN total_wait_time FORMAT 999,999,999,999 HEADING 'TOTAL_WAIT'
COLUMN total_io_read_data FORMAT 999,999,999,999 HEADING 'IO_READ'
COLUMN total_memory_reads FORMAT 999,999,999,999 HEADING 'MEM_READ'

SELECT
    TO_CHAR(ash.sample_time, 'YYYY-MM-DD HH24:MI:SS') sample_time,
    ash.sql_id,
    u.username,
    sqa.sql_text,
    SUM(ash.wait_time + ash.time_waited)                             total_wait_time,
    round(SUM(ash.delta_read_io_bytes /(ash.delta_time / 1000000)))  total_io_read_data,
    round(SUM(ash.delta_read_mem_bytes /(ash.delta_time / 1000000))) total_memory_reads
FROM
    v$active_session_history ash,
    v$sqlarea                sqa,
    dba_users                u
WHERE
        ash.sql_id = sqa.sql_id
    AND ash.user_id = u.user_id
    AND u.username != 'SYS'
    AND ash.sample_time > sysdate - 3 / 24 -- last 3 hours
GROUP BY
    TO_CHAR(ash.sample_time, 'YYYY-MM-DD HH24:MI:SS'),
    ash.sql_id,
    u.username,
    sqa.sql_text
ORDER BY
    5 DESC;