DOYENSYS Knowledge Portal




We Welcome you to visit our DOYENSYS KNOWLEDGE PORTAL : Doyensys Knowledge Portal




Thursday, July 14, 2016

Script to get SQL ID which has more than one plan hash value.

-- Script to get SQL ID which has more than one plan hash value.
-- This is for last 7 days data from sysdate,


SET SERVEROUTPUT ON
DECLARE
    v_count number := 0;
    CURSOR SQLID IS
    SELECT SQL_ID, COUNT(DISTINCT PLAN_HASH_VALUE) cnt
      FROM DBA_HIST_SQLSTAT STAT, DBA_HIST_SNAPSHOT SS
     WHERE STAT.SNAP_ID = SS.SNAP_ID AND
           SS.DBID = STAT.DBID AND
           SS.INSTANCE_NUMBER = STAT.INSTANCE_NUMBER AND
           SS.BEGIN_INTERVAL_TIME > = SYSDATE-7 AND
           ss.END_INTERVAL_TIME<=sysdate AND
           STAT.PLAN_HASH_VALUE <> 0 AND
           STAT.executions_delta > 0 AND
           STAT.PARSING_SCHEMA_NAME NOT IN ('SYS','SYSTEM')
    GROUP BY SQL_ID
    ORDER BY 1;

BEGIN
    FOR I IN SQLID
    loop
        IF I.cnt > 1 THEN
            DBMS_OUTPUT.PUT_LINE ('We see multiple plan for this sql :-'||I.sql_id||'. Here Considered last 7 days. Please login to DB and check any difference in ETIME by running change.sql.');
        --ELSE
            /** DBMS_OUTPUT.PUT_LINE ('This sqlid '||I.sql_id||' has more than one plan, but the plan was not changed since last 7days.');**/
        END IF;
    end loop;
END;

No comments: