208 lines
7.7 KiB
MySQL
208 lines
7.7 KiB
MySQL
@@header
|
|
|
|
/*
|
|
*
|
|
* Author : Vishal Gupta
|
|
* Purpose : Display load profile from AWR
|
|
* All figures delta between two consecutive snapshots
|
|
* Parameter : 1 - InstanceNumber (Use % for all instances)
|
|
* 2 - No of days
|
|
*
|
|
* dbid and instancenumber are optional.
|
|
* If not passes then it takes current instance's dbid and instancenumber
|
|
*
|
|
* Revision History:
|
|
* ===================
|
|
* Date Author Description
|
|
* --------- ------------ -----------------------------------------
|
|
* 04-Apr-12 Vishal Gupta First Draft
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
/************************************
|
|
* INPUT PARAMETERS
|
|
************************************/
|
|
UNDEFINE INST_ID
|
|
UNDEFINE days
|
|
|
|
DEFINE INST_ID="&&1"
|
|
DEFINE days="&&2"
|
|
|
|
|
|
COLUMN _INST_ID NEW_VALUE INST_ID NOPRINT
|
|
COLUMN _days NEW_VALUE days NOPRINT
|
|
|
|
set term off
|
|
SELECT DECODE('&&INST_ID','','%','&&INST_ID') "_INST_ID"
|
|
, DECODE('&&days','','7','&&days') "_days"
|
|
FROM DUAL;
|
|
set term on
|
|
|
|
|
|
/************************************
|
|
* CONFIGURATION PARAMETERS
|
|
************************************/
|
|
|
|
set pages 2000
|
|
|
|
|
|
DEFINE COUNT_FORMAT="999,999"
|
|
|
|
--DEFINE COUNT_DIVIDER="1"
|
|
--DEFINE COUNT_HEADING="#"
|
|
DEFINE COUNT_DIVIDER="1000"
|
|
DEFINE COUNT_HEADING="'000s"
|
|
|
|
DEFINE BYTES_FORMAT="99999"
|
|
|
|
--DEFINE BYTES_DIVIDER="1024"
|
|
--DEFINE BYTES_HEADING="KB"
|
|
--DEFINE BYTES_DIVIDER="1024/1024"
|
|
--DEFINE BYTES_HEADING="MB"
|
|
DEFINE BYTES_DIVIDER="1024/1024/1024"
|
|
DEFINE BYTES_HEADING="GB"
|
|
|
|
DEFINE TIME_FORMAT=9,999
|
|
DEFINE TIME_DIVIDER="1"
|
|
DEFINE TIME_HEADING="sec"
|
|
|
|
|
|
PROMPT
|
|
PROMPT *****************************************************
|
|
PROMPT *** P H Y S I C A L R E A D S T R E N D ***
|
|
PROMPT *****************************************************
|
|
|
|
COLUMN end_interval_day HEADING "Date|DD-MON-YY Day" FORMAT a14
|
|
COLUMN DayTotal HEADING "DayTotal|(&BYTES_HEADING)" FORMAT 9,999,999
|
|
COLUMN h00 HEADING "h00|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h01 HEADING "h01|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h02 HEADING "h02|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h03 HEADING "h03|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h04 HEADING "h04|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h05 HEADING "h05|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h06 HEADING "h06|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h07 HEADING "h07|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h08 HEADING "h08|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h09 HEADING "h09|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h10 HEADING "h10|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h11 HEADING "h11|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h12 HEADING "h12|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h13 HEADING "h13|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h14 HEADING "h14|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h15 HEADING "h15|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h16 HEADING "h16|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h17 HEADING "h17|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h18 HEADING "h18|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h19 HEADING "h19|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h20 HEADING "h20|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h21 HEADING "h21|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h22 HEADING "h22|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
COLUMN h23 HEADING "h23|(&BYTES_HEADING)" FORMAT &BYTES_FORMAT
|
|
|
|
BREAK ON REPORT
|
|
|
|
COMPUTE MIN MAX AVG OF DayTotal ON REPORT
|
|
COMPUTE MIN MAX AVG OF h00 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h01 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h02 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h03 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h04 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h05 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h06 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h07 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h08 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h09 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h10 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h11 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h12 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h13 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h14 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h15 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h16 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h17 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h18 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h19 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h20 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h21 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h22 ON REPORT
|
|
COMPUTE MIN MAX AVG OF h23 ON REPORT
|
|
|
|
|
|
WITH snap
|
|
AS
|
|
(SELECT s.dbid
|
|
, s.instance_number
|
|
, s.snap_id
|
|
, LAG (s.snap_id) OVER (PARTITION BY s.dbid, s.instance_number ORDER BY s.dbid, s.instance_number, s.snap_id) prev_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 > TRUNC(systimestamp) - &days
|
|
)
|
|
, awr_stats as
|
|
(
|
|
SELECT TRUNC(snap.end_interval_time) end_interval_day
|
|
, TO_CHAR(snap.end_interval_time,'hh24') end_interval_hour
|
|
, ROUND(( GREATEST(ss2.value,NVL(ss1.value,0)) -- In case of instance bounce ss2.value will be lower than ss1.value
|
|
- NVL(ss1.value,ss2.value) -- In cases where there is no previous snapshot, ss1.value will be null.
|
|
) * p.value / &BYTES_DIVIDER) value_delta
|
|
FROM snap
|
|
, dba_hist_sysstat ss1
|
|
, dba_hist_sysstat ss2
|
|
, dba_hist_stat_name sn
|
|
, v$system_parameter p
|
|
where p.name = 'db_block_size'
|
|
and ss1.dbid = snap.dbid
|
|
and ss1.instance_number = snap.instance_number
|
|
and ss1.snap_id = snap.prev_snap_id
|
|
and ss2.dbid = snap.dbid
|
|
and ss2.instance_number = snap.instance_number
|
|
and ss2.snap_id = snap.snap_id
|
|
and ss1.stat_id = ss2.stat_id
|
|
and ss1.dbid = sn.dbid
|
|
and ss1.stat_id = sn.stat_id
|
|
and sn.stat_name in (
|
|
'physical reads'
|
|
)
|
|
)
|
|
SELECT TO_CHAR(s.end_interval_day,'DD-Mon-YY Dy') end_interval_day
|
|
, SUM(s.value_delta) DayTotal
|
|
, SUM(DECODE(s.end_interval_hour,'00',s.value_delta,0)) h00
|
|
, SUM(DECODE(s.end_interval_hour,'01',s.value_delta,0)) h01
|
|
, SUM(DECODE(s.end_interval_hour,'02',s.value_delta,0)) h02
|
|
, SUM(DECODE(s.end_interval_hour,'03',s.value_delta,0)) h03
|
|
, SUM(DECODE(s.end_interval_hour,'04',s.value_delta,0)) h04
|
|
, SUM(DECODE(s.end_interval_hour,'05',s.value_delta,0)) h05
|
|
, SUM(DECODE(s.end_interval_hour,'06',s.value_delta,0)) h06
|
|
, SUM(DECODE(s.end_interval_hour,'07',s.value_delta,0)) h07
|
|
, SUM(DECODE(s.end_interval_hour,'08',s.value_delta,0)) h08
|
|
, SUM(DECODE(s.end_interval_hour,'09',s.value_delta,0)) h09
|
|
, SUM(DECODE(s.end_interval_hour,'10',s.value_delta,0)) h10
|
|
, SUM(DECODE(s.end_interval_hour,'11',s.value_delta,0)) h11
|
|
, SUM(DECODE(s.end_interval_hour,'12',s.value_delta,0)) h12
|
|
, SUM(DECODE(s.end_interval_hour,'13',s.value_delta,0)) h13
|
|
, SUM(DECODE(s.end_interval_hour,'14',s.value_delta,0)) h14
|
|
, SUM(DECODE(s.end_interval_hour,'15',s.value_delta,0)) h15
|
|
, SUM(DECODE(s.end_interval_hour,'16',s.value_delta,0)) h16
|
|
, SUM(DECODE(s.end_interval_hour,'17',s.value_delta,0)) h17
|
|
, SUM(DECODE(s.end_interval_hour,'18',s.value_delta,0)) h18
|
|
, SUM(DECODE(s.end_interval_hour,'19',s.value_delta,0)) h19
|
|
, SUM(DECODE(s.end_interval_hour,'20',s.value_delta,0)) h20
|
|
, SUM(DECODE(s.end_interval_hour,'21',s.value_delta,0)) h21
|
|
, SUM(DECODE(s.end_interval_hour,'22',s.value_delta,0)) h22
|
|
, SUM(DECODE(s.end_interval_hour,'23',s.value_delta,0)) h23
|
|
FROM awr_stats s
|
|
GROUP BY s.end_interval_day
|
|
ORDER BY s.end_interval_day
|
|
/
|
|
|
|
UNDEFINE days
|
|
UNDEFINE INST_ID
|
|
|
|
|
|
@@footer
|