Disclaimer

Saturday, 23 November 2024

Top 20 Resource Intensive SQL IDs in Oracle


set lines 200
set pages 200


SELECT *
FROM (
    SELECT RANK() OVER (PARTITION BY "Snap Day" ORDER BY "CPU Time" 
        + "Disk Reads" 
        + "Buffer Gets" 
        + "Writes" 
        + "Sorts" 
        + "Parses" DESC) AS "Rank",
        i1.*
    FROM (
        SELECT TO_CHAR(hs.begin_interval_time, 'MM/DD/YY') "Snap Day",
               shs.sql_id "Sql id",
               SUM(shs.executions_delta) "Execs",
               ROUND((SUM(shs.elapsed_time_delta) / 1000000) / SUM(shs.executions_delta), 1) "Time Ea Sec",
               ROUND((SUM(shs.cpu_time_delta) / 1000000) / SUM(shs.executions_delta), 1) "CPU Ea Sec",
               ROUND((SUM(shs.iowait_delta) / 1000000) / SUM(shs.executions_delta), 1) "IO/Wait Ea Sec",
               SUM(shs.cpu_time_delta) "CPU Time",
               SUM(shs.disk_reads_delta) "Disk Reads",
               SUM(shs.buffer_gets_delta) "Buffer Gets",
               SUM(shs.direct_writes_delta) "Writes",
               SUM(shs.parse_calls_delta) "Parses",
               SUM(shs.sorts_delta) "Sorts",
               SUM(shs.elapsed_time_delta) "Elapsed"
        FROM dba_hist_sqlstat shs
        INNER JOIN dba_hist_sqltext sht ON (sht.sql_id = shs.sql_id)
        INNER JOIN dba_hist_snapshot hs ON (shs.snap_id = hs.snap_id)
        HAVING SUM(shs.executions_delta) > 0
        GROUP BY shs.sql_id,
                 TO_CHAR(hs.begin_interval_time, 'MM/DD/YY')
        ORDER BY "Snap Day" DESC
    ) i1
    ORDER BY "Snap Day" DESC
)
WHERE "Rank" <= 20 
  AND "Snap Day" = TO_CHAR(SYSDATE, 'MM/DD/YY');



No comments:

Post a Comment

Understanding SQL Plan Baselines in Oracle Database

  Understanding SQL Plan Baselines in Oracle Database SQL Plan Baseline is the feature in Oracle started from Database 11g that helps to pre...