136 lines
5.0 KiB
SQL
136 lines
5.0 KiB
SQL
@@header
|
|
|
|
/*
|
|
*
|
|
* Author : Vishal Gupta
|
|
* Purpose : Display hourly load profile from AWR for statistics passed as input
|
|
* All figures delta between two consecutive snapshots
|
|
* Parameter : 1 - InstanceNumber (Use % for all instances)
|
|
* 2 - From Timestamp (In YYYY-MM-DD HH24:MI:SS format)
|
|
* 3 - To Timestamp (In YYYY-MM-DD HH24:MI:SS format)
|
|
* 4 - Statistics Name (Exact Name, use @statname script to find exact name)
|
|
*
|
|
*
|
|
*
|
|
* Revision History:
|
|
* ===================
|
|
* Date Author Description
|
|
* --------- ------------ -----------------------------------------
|
|
* 25-May-12 Vishal Gupta Intial version
|
|
*
|
|
*/
|
|
|
|
|
|
/************************************
|
|
* INPUT PARAMETERS
|
|
************************************/
|
|
UNDEFINE INST_ID
|
|
UNDEFINE FROM_TIMESTAMP
|
|
UNDEFINE FROM_TIMESTAMP
|
|
UNDEFINE STAT_NAME
|
|
|
|
DEFINE INST_ID="&&1"
|
|
DEFINE FROM_TIMESTAMP="&2"
|
|
DEFINE TO_TIMESTAMP="&3"
|
|
DEFINE STAT_NAME="&4"
|
|
|
|
/************************************
|
|
* CONFIGURATION PARAMETERS
|
|
************************************/
|
|
|
|
set pages 50000
|
|
|
|
|
|
DEFINE FORMAT="999,999,999,999"
|
|
DEFINE TOTAL_FORMAT="999,999,999,999"
|
|
|
|
DEFINE HEADING="#"
|
|
DEFINE DIVIDER="1"
|
|
--DEFINE HEADING="'1000s"
|
|
--DEFINE DIVIDER="1000"
|
|
|
|
--DEFINE HEADING="min"
|
|
--DEFINE DIVIDER="60/100"
|
|
--DEFINE HEADING="hr"
|
|
--DEFINE DIVIDER="60/60/100"
|
|
|
|
--DEFINE HEADING="'KB"
|
|
--DEFINE DIVIDER="1024"
|
|
--DEFINE HEADING="'MB"
|
|
--DEFINE DIVIDER="1024/1024"
|
|
--DEFINE HEADING="'GB"
|
|
--DEFINE DIVIDER="1024/1024/1024"
|
|
|
|
|
|
|
|
|
|
PROMPT
|
|
PROMPT ************************************************************************************
|
|
PROMPT *
|
|
PROMPT * S Y S T E M S T A T I S T I C S T R E N D
|
|
PROMPT *
|
|
PROMPT * From AWR Repository (Delta Figures)
|
|
PROMPT * - For Instance ID - &INST_ID
|
|
PROMPT * - Between &&FROM_TIMESTAMP and &&TO_TIMESTAMP (YYYY-MM-DD HH24:MI:SS)
|
|
PROMPT * - Statistic Name - "&&STAT_NAME"
|
|
PROMPT *
|
|
PROMPT * (All Figures are in &&HEADING)
|
|
PROMPT *
|
|
PROMPT ************************************************************************************
|
|
|
|
|
|
COLUMN end_interval_time HEADING "SnapTime" FORMAT A15
|
|
COLUMN all_inst_value HEADING "All Inst|Value" FORMAT &&TOTAL_FORMAT
|
|
COLUMN inst1_value HEADING "Inst 1|Value" FORMAT &&FORMAT
|
|
COLUMN inst2_value HEADING "Inst 2|Value" FORMAT &&FORMAT
|
|
COLUMN inst3_value HEADING "Inst 3|Value" FORMAT &&FORMAT
|
|
COLUMN inst4_value HEADING "Inst 4|Value" FORMAT &&FORMAT
|
|
COLUMN inst5_value HEADING "Inst 5|Value" FORMAT &&FORMAT
|
|
COLUMN inst6_value HEADING "Inst 6|Value" FORMAT &&FORMAT
|
|
COLUMN inst7_value HEADING "Inst 7|Value" FORMAT &&FORMAT
|
|
COLUMN inst8_value HEADING "Inst 8|Value" FORMAT &&FORMAT
|
|
|
|
WITH snap
|
|
AS
|
|
(SELECT s.dbid
|
|
, s.instance_number
|
|
, s.snap_id
|
|
, LEAD (s.snap_id) OVER (ORDER BY s.dbid, s.instance_number, s.snap_id) next_snap_id
|
|
, s.end_interval_time
|
|
FROM dba_hist_snapshot s
|
|
, v$database d
|
|
WHERE s.dbid = d.dbid
|
|
AND s.instance_number LIKE '&&INST_ID'
|
|
AND s.end_interval_time BETWEEN TO_TIMESTAMP('&&FROM_TIMESTAMP','YYYY-MM-DD HH24:MI:SS')
|
|
AND TO_TIMESTAMP('&&TO_TIMESTAMP' ,'YYYY-MM-DD HH24:MI:SS')
|
|
)
|
|
SELECT /*+ USE_NL(s1 ss1 ss_prev) */
|
|
TO_CHAR(s.end_interval_time,'DD-MON-YY HH24:MI') end_interval_time
|
|
, ROUND(SUM(ss.value - LEAST(ss_prev.value,ss.value)) / &&DIVIDER ) all_inst_value
|
|
, ROUND(SUM(DECODE(ss.instance_number,1,(ss.value - LEAST(ss_prev.value,ss.value)),0)) / &&DIVIDER ) inst1_value
|
|
, ROUND(SUM(DECODE(ss.instance_number,2,(ss.value - LEAST(ss_prev.value,ss.value)),0)) / &&DIVIDER ) inst2_value
|
|
, ROUND(SUM(DECODE(ss.instance_number,3,(ss.value - LEAST(ss_prev.value,ss.value)),0)) / &&DIVIDER ) inst3_value
|
|
, ROUND(SUM(DECODE(ss.instance_number,4,(ss.value - LEAST(ss_prev.value,ss.value)),0)) / &&DIVIDER ) inst4_value
|
|
, ROUND(SUM(DECODE(ss.instance_number,5,(ss.value - LEAST(ss_prev.value,ss.value)),0)) / &&DIVIDER ) inst5_value
|
|
, ROUND(SUM(DECODE(ss.instance_number,6,(ss.value - LEAST(ss_prev.value,ss.value)),0)) / &&DIVIDER ) inst6_value
|
|
, ROUND(SUM(DECODE(ss.instance_number,7,(ss.value - LEAST(ss_prev.value,ss.value)),0)) / &&DIVIDER ) inst7_value
|
|
, ROUND(SUM(DECODE(ss.instance_number,8,(ss.value - LEAST(ss_prev.value,ss.value)),0)) / &&DIVIDER ) inst8_value
|
|
FROM snap s
|
|
, dba_hist_sysstat ss
|
|
, dba_hist_sysstat ss_prev
|
|
where s.next_snap_id IS NOT NULL
|
|
and s.dbid = ss_prev.dbid
|
|
and s.instance_number = ss_prev.instance_number
|
|
and s.snap_id = ss_prev.snap_id
|
|
and s.dbid = ss.dbid
|
|
and s.instance_number = ss.instance_number
|
|
and s.next_snap_id = ss.snap_id
|
|
and ss_prev.stat_name = ss.stat_name
|
|
and ss.stat_name = '&&STAT_NAME'
|
|
GROUP BY TO_CHAR(s.end_interval_time,'DD-MON-YY HH24:MI')
|
|
ORDER BY TO_DATE(TO_CHAR(s.end_interval_time,'DD-MON-YY HH24:MI'),'DD-MON-YY HH24:MI') asc
|
|
/
|
|
|
|
|
|
@@footer
|