Querying the SQL Running During an ASH Sample
Submitted by dave on Fri, 02/07/2014 - 10:50
-- 1) Survey the sampling activity near the interesting event
SELECT DISTINCT SAMPLE_ID, SAMPLE_TIME
FROM DBA_HIST_ACTIVE_SESS_HISTORY
WHERE INSTANCE_NUMBER=:INSTNUM
AND SAMPLE_TIME > TO_DATE('2014-02-07 08:00','YYYY-MM-DD HH24:MI')
AND SAMPLE_TIME < TO_DATE('2014-02-07 09:00','YYYY-MM-DD HH24:MI')
ORDER BY 2;
-- 2) Get SQL running during the sample time
SELECT DHS.SQL_TEXT,
ASH.*
FROM DBA_HIST_ACTIVE_SESS_HISTORY ASH LEFT OUTER JOIN DBA_HIST_SQLTEXT DHS
ON ASH.SQL_ID=DHS.SQL_ID
WHERE ASH.SAMPLE_ID=:SAMPLEID AND ASH.INSTANCE_NUMBER=:INSTNUM;
-- 1) Find Sample_IDs for desired range
WITH SAMPLEIDS AS (
SELECT DISTINCT SAMPLE_ID, SAMPLE_TIME, INSTANCE_NUMBER
FROM DBA_HIST_ACTIVE_SESS_HISTORY
WHERE SAMPLE_TIME > TO_DATE('2023-09-27 23:50','YYYY-MM-DD HH24:MI')
AND SAMPLE_TIME < TO_DATE('2023-09-28 00:10','YYYY-MM-DD HH24:MI')
ORDER BY 2)
-- 2) Get SQL running during the sample times
SELECT SAMPLEIDS.*,
DHS.SQL_TEXT,
ASH.*
FROM DBA_HIST_ACTIVE_SESS_HISTORY ASH
INNER JOIN SAMPLEIDS ON ASH.SAMPLE_ID=SAMPLEIDS.SAMPLE_ID AND ASH.INSTANCE_NUMBER=SAMPLEIDS.INSTANCE_NUMBER
LEFT OUTER JOIN DBA_HIST_SQLTEXT DHS ON ASH.SQL_ID=DHS.SQL_ID
ORDER BY ASH.SAMPLE_ID, ASH.INSTANCE_NUMBER;