DOYENSYS Knowledge Portal




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




Tuesday, September 22, 2015

Hard Parse Count Report - Hourly Basis

REM
REM FILENAME
REM Hard_Parse_Count_Houry_Rep.sql
REM DESCRIPTION
REM Hard Parse Count Report Hourly Basis
REM Provide Input format as DD-MON-YYYY HH24:MI
REM NOTES
REM This data based on awr tables. So make sure AWR is enabled before running this query
REM Usage: sqlplus @Hard_Parse_Count_Houry_Rep.sql
REM+==============================================================+

set serveroutput on
set lines 130
set verify off
accept v_begin_time prompt 'Enter BEGIN_TIME DD-MON-YYYY HH24:MI->'
accept v_end_time prompt 'Enter END_TIME DD-MON-YYYY HH24:MI->'
DECLARE
   lv_v_stat_name   dba_hist_sysstat.stat_name%TYPE;
   lv_v_per_sec     NUMBER;
   lv_n_cnt         NUMBER                            := 0;

BEGIN
   FOR c1 IN
      (SELECT TO_CHAR (begin_interval_time, 'DD-MON-YY:HH24:MI') sun,TO_CHAR (begin_interval_time + (1/24), 'DD-MON-YY:HH24:MI')  sun1
         FROM dba_hist_snapshot
        WHERE begin_interval_time BETWEEN   TO_DATE ('&v_begin_time',
                                                     'DD-MON-YYYY HH24:MI'
                                                    )
                                          - 1 / 24
                                      AND TO_DATE ('&v_end_time',
                                                   'DD-MON-YYYY HH24:MI'
                                                  )order by 1)
   LOOP
      BEGIN
      --dbms_output.put_line (c1.sun);
         SELECT   e.stat_name "Statistic Name",
                  ROUND
                     (  (e.VALUE - b.VALUE)
                      / (SELECT AVG
                                   (    EXTRACT
                                             (DAY FROM (  e1.end_interval_time
                                                        - b1.end_interval_time
                                                       )
                                             )
                                      * 24
                                      * 60
                                      * 60
                                    +   EXTRACT
                                            (HOUR FROM (  e1.end_interval_time
                                                        - b1.end_interval_time
                                                       )
                                            )
                                      * 60
                                      * 60
                                    +   EXTRACT
                                           (MINUTE FROM (  e1.end_interval_time
                                                         - b1.end_interval_time
                                                        )
                                           )
                                      * 60
                                    + EXTRACT
                                          (SECOND FROM (  e1.end_interval_time
                                                        - b1.end_interval_time
                                                       )
                                          )
                                   )
                           FROM dba_hist_snapshot b1, dba_hist_snapshot e1
                          WHERE b1.snap_id = b.snap_id
                            AND e1.snap_id = e.snap_id
                            AND b1.dbid = b.dbid
                            AND e1.dbid = e.dbid
                            AND b1.instance_number = b.instance_number
                            AND e1.instance_number = e.instance_number
                            AND b1.startup_time = e1.startup_time
                            AND b1.end_interval_time < e1.end_interval_time),
                      2
                     ) "Per Second"
             INTO lv_v_stat_name,
                  lv_v_per_sec
             FROM dba_hist_sysstat b, dba_hist_sysstat e
            WHERE b.snap_id =
                     (SELECT snap_id
                        FROM dba_hist_snapshot
                       WHERE begin_interval_time
                                BETWEEN   TO_DATE (c1.sun,
                                                   'DD-MON-YY HH24:MI'
                                                  )
                                        - 1 / 24
                                    AND TO_DATE (c1.sun,
                                                 'DD-MON-YY HH24:MI'))
              AND e.snap_id =
                     (SELECT snap_id
                        FROM dba_hist_snapshot
                       WHERE begin_interval_time
                                BETWEEN   TO_DATE (c1.sun,
                                                   'DD-MON-YY HH24:MI'
                                                  )
                                     AND TO_DATE (c1.sun,
                                                 'DD-MON-YY HH24:MI') +1/24)
              AND b.stat_id = e.stat_id
              AND e.stat_name LIKE '%hard%'
              AND e.VALUE >= b.VALUE
              AND e.VALUE > 0
         ORDER BY 1 ASC;

         lv_n_cnt := lv_n_cnt + 1;
         DBMS_OUTPUT.put_line (c1.sun ||'--'||c1.sun1||'    '||lv_v_stat_name||'     '||lv_v_per_sec);
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            DBMS_OUTPUT.put_line ('No Data Found');
         WHEN OTHERS
         THEN
            DBMS_OUTPUT.put_line ('When Others Error');
      END;
   END LOOP;
END;
/
REM SCRIPT ENDED
REM+==============================================================+

Sample Output:

Enter BEGIN_TIME DD-MON-YYYY HH24:MI->21-SEP-2015 00:00
Enter END_TIME DD-MON-YYYY HH24:MI->21-SEP-2015 10:00
21-SEP-15:00:00--21-SEP-15:01:00    parse count (hard)     2.91
21-SEP-15:01:00--21-SEP-15:02:00    parse count (hard)     2.74
21-SEP-15:02:00--21-SEP-15:03:00    parse count (hard)     2.01
21-SEP-15:03:00--21-SEP-15:04:00    parse count (hard)     2.55
21-SEP-15:04:00--21-SEP-15:05:00    parse count (hard)     2.86
21-SEP-15:05:00--21-SEP-15:06:00    parse count (hard)     3.02
21-SEP-15:06:00--21-SEP-15:07:00    parse count (hard)     3.15
21-SEP-15:07:00--21-SEP-15:08:00    parse count (hard)     2.98
21-SEP-15:08:00--21-SEP-15:09:00    parse count (hard)     2.87
21-SEP-15:09:00--21-SEP-15:10:00    parse count (hard)     2.88



No comments: