Back to Performance Tuning
sql
6a AWR History Long Running Queries
6a_awr_history_long_running_queries.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 sql_id FORMAT A13 HEADING 'SQL_ID'
COLUMN snap_begin_time FORMAT A20 HEADING 'SNAP_BEGIN'
COLUMN snap_end_time FORMAT A20 HEADING 'SNAP_END'
COLUMN sql_text FORMAT A120 HEADING 'SQL_TEXT'
COLUMN executions FORMAT 999,999,999,999 HEADING 'EXECUTIONS'
COLUMN elapsed_time_seconds FORMAT 999,999,999,999.99 HEADING 'ELAPSED_SEC'
SELECT
t.sql_id,
TO_CHAR(MIN(sn.begin_interval_time), 'YYYY-MM-DD HH24:MI:SS') snap_begin_time,
TO_CHAR(MAX(sn.end_interval_time), 'YYYY-MM-DD HH24:MI:SS') snap_end_time,
MAX(CAST(dbms_lob.substr(t.sql_text, 200) AS NVARCHAR2(200))) sql_text,
SUM(s.executions_delta) executions,
SUM(s.elapsed_time_delta) / 1000 / 1000 elapsed_time_seconds
FROM
dba_hist_sqlstat s,
dba_hist_sqltext t,
dba_hist_snapshot sn
WHERE
t.sql_id = s.sql_id
AND s.snap_id = sn.snap_id
AND sn.begin_interval_time > sysdate - 7
AND sn.end_interval_time < sysdate
AND parsing_schema_name NOT IN ('SYS')
GROUP BY
t.sql_id
ORDER BY
elapsed_time_seconds DESC;