oracle sql performance based on sql text
SELECT h.SQL_ID,
s.SQL_TEXT,
h.EXECUTIONS,
h.ELAPSED_TIME,
h.CPU_TIME,
h.BUFFER_GETS,
h.DISK_READS,
h.ROWS_PROCESSED,
h.MODULE
FROM (
SELECT SQL_ID,
LISTAGG(TEXT, '') WITHIN GROUP (ORDER BY PIECE) AS SQL_TEXT
FROM V$SQLTEXT
GROUP BY SQL_ID
) s
JOIN DBA_HIST_SQLSTAT h ON s.SQL_ID = h.SQL_ID
WHERE h.SNAP_ID BETWEEN :start_snap_id AND :end_snap_id
ORDER BY h.BUFFER_GETS DESC;
SELECT
s.SQL_ID,
t.SQL_TEXT,
s.EXECUTIONS,
s.ELAPSED_TIME,
s.CPU_TIME,
s.BUFFER_GETS,
s.DISK_READS,
s.ROWS_PROCESSED,
s.MODULE
FROM
DBA_HIST_SQLSTAT s
JOIN
(SELECT SQL_ID,
LISTAGG(SQL_TEXT, '') WITHIN GROUP (ORDER BY PIECE) AS SQL_TEXT
FROM DBA_HIST_SQLTEXT
GROUP BY SQL_ID) t ON s.SQL_ID = t.SQL_ID
WHERE
UPPER(t.SQL_TEXT) LIKE '%YOUR_PATTERN%' -- Replace 'YOUR_PATTERN' with the actual SQL pattern
AND
s.SNAP_ID BETWEEN :start_snap_id AND :end_snap_id -- Replace :start_snap_id and :end_snap_id with your snapshot range
ORDER BY
s.BUFFER_GETS DESC;
Comments
Post a Comment