2026-03-12 20:23:15
This commit is contained in:
152
vg/awr_service_stats.sql
Normal file
152
vg/awr_service_stats.sql
Normal file
@@ -0,0 +1,152 @@
|
||||
@@header
|
||||
|
||||
/*
|
||||
*
|
||||
* Author : Vishal Gupta
|
||||
* Purpose : Display Service statistics from AWR
|
||||
* Parameters : 1 - Statistic Name (Use % as wildcard, escape with \)
|
||||
* 2 - SERVICE_NAME (Use % as wildcard, escape with \)
|
||||
* 3 - From timestamp (YYYY-MM-DD HH24:MI:SS format, Default value sysdate - 2 hours)
|
||||
* 4 - To timstamp (YYYY-MM-DD HH24:MI:SS format, Default value sysdate)
|
||||
*
|
||||
*
|
||||
* Revision History:
|
||||
* ===================
|
||||
* Date Author Description
|
||||
* --------- ------------ -----------------------------------------
|
||||
* 19-Mar-12 Vishal Gupta Intial version
|
||||
* 15-May-12 Vishal Gupta Change from/to relative hours to absolute timestamp
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/************************************
|
||||
* INPUT PARAMETERS
|
||||
************************************/
|
||||
UNDEFINE service_name
|
||||
UNDEFINE stat_name
|
||||
UNDEFINE from_timestamp
|
||||
UNDEFINE to_timestamp
|
||||
|
||||
DEFINE stat_name="&&1"
|
||||
DEFINE service_name="&&2"
|
||||
DEFINE from_timestamp="&&3"
|
||||
DEFINE to_timestamp="&&4"
|
||||
|
||||
set term off
|
||||
COLUMN _stat_name NEW_VALUE stat_name NOPRINT
|
||||
COLUMN _service_name NEW_VALUE service_name NOPRINT
|
||||
COLUMN _from_timestamp NEW_VALUE from_timestamp NOPRINT
|
||||
COLUMN _to_timestamp NEW_VALUE to_timestamp NOPRINT
|
||||
|
||||
SELECT UPPER(DECODE('&&stat_name','','physical reads','&&stat_name')) "_stat_name"
|
||||
, UPPER(DECODE('&&service_name','','%','&&service_name')) "_service_name"
|
||||
, UPPER(DECODE('&&from_timestamp','',TO_CHAR(sysdate - 120/(24*60),'YYYY-MM-DD HH24:MI:SS'),'&&from_timestamp')) "_from_timestamp"
|
||||
, UPPER(DECODE('&&to_timestamp','',TO_CHAR(sysdate ,'YYYY-MM-DD HH24:MI:SS'),'&&to_timestamp')) "_to_timestamp"
|
||||
FROM DUAL;
|
||||
set term on
|
||||
|
||||
|
||||
/************************************
|
||||
* CONFIGURATION PARAMETERS
|
||||
************************************/
|
||||
DEFINE FORMAT=999,999,999
|
||||
DEFINE DIVIDER="1"
|
||||
DEFINE HEADING="#s"
|
||||
--DEFINE DIVIDER="1000"
|
||||
--DEFINE HEADING="#1000s"
|
||||
--DEFINE DIVIDER="1000000"
|
||||
--DEFINE HEADING="#1000000s"
|
||||
|
||||
DEFINE TOTAL_FORMAT=999,999,999,999
|
||||
DEFINE TOTAL_HEADING="#1000s"
|
||||
|
||||
|
||||
PROMPT ***************************************************************************************************
|
||||
PROMPT * AWR Service Statistics (Delta)
|
||||
PROMPT *
|
||||
PROMPT * Input Parameters
|
||||
PROMPT * - Service Name = '&&service_name'
|
||||
PROMPT * - Statistic Name = '&&stat_name'
|
||||
PROMPT * - From Timestamp = '&&from_timestamp'
|
||||
PROMPT * - To Timestamp = '&&to_timestamp'
|
||||
PROMPT ***************************************************************************************************
|
||||
|
||||
|
||||
COLUMN end_interval_time HEADING "SnapTime" FORMAT a15
|
||||
COLUMN service_name HEADING "ServiceName" FORMAT a25
|
||||
COLUMN stat_name HEADING "StatisticName" FORMAT a25
|
||||
COLUMN value_clusterwide HEADING "RAC Wide|Value|(&&TOTAL_HEADING)" FORMAT &&TOTAL_FORMAT
|
||||
COLUMN value_inst1 HEADING "Inst 1|Value|(&&HEADING)" FORMAT &&FORMAT
|
||||
COLUMN value_inst2 HEADING "Inst 2|Value|(&&HEADING)" FORMAT &&FORMAT
|
||||
COLUMN value_inst3 HEADING "Inst 3|Value|(&&HEADING)" FORMAT &&FORMAT
|
||||
COLUMN value_inst4 HEADING "Inst 4|Value|(&&HEADING)" FORMAT &&FORMAT
|
||||
COLUMN value_inst5 HEADING "Inst 5|Value|(&&HEADING)" FORMAT &&FORMAT
|
||||
COLUMN value_inst6 HEADING "Inst 6|Value|(&&HEADING)" FORMAT &&FORMAT
|
||||
COLUMN value_inst7 HEADING "Inst 7|Value|(&&HEADING)" FORMAT &&FORMAT
|
||||
COLUMN value_inst8 HEADING "Inst 8|Value|(&&HEADING)" FORMAT &&FORMAT
|
||||
|
||||
BREAK ON REPORT
|
||||
COMPUTE SUM LABEL 'Total' OF value_clusterwide FORMAT &&TOTAL_FORMAT ON REPORT
|
||||
COMPUTE SUM LABEL 'Total' OF value_inst1 FORMAT &&TOTAL_FORMAT ON REPORT
|
||||
COMPUTE SUM LABEL 'Total' OF value_inst2 FORMAT &&TOTAL_FORMAT ON REPORT
|
||||
COMPUTE SUM LABEL 'Total' OF value_inst3 FORMAT &&TOTAL_FORMAT ON REPORT
|
||||
COMPUTE SUM LABEL 'Total' OF value_inst4 FORMAT &&TOTAL_FORMAT ON REPORT
|
||||
COMPUTE SUM LABEL 'Total' OF value_inst5 FORMAT &&TOTAL_FORMAT ON REPORT
|
||||
COMPUTE SUM LABEL 'Total' OF value_inst6 FORMAT &&TOTAL_FORMAT ON REPORT
|
||||
COMPUTE SUM LABEL 'Total' OF value_inst7 FORMAT &&TOTAL_FORMAT ON REPORT
|
||||
COMPUTE SUM LABEL 'Total' OF value_inst8 FORMAT &&TOTAL_FORMAT 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 d.dbid = s.dbid
|
||||
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 TO_CHAR(s.end_interval_time,'DD-MON-YY HH24:MI') end_interval_time
|
||||
, ss.service_name
|
||||
, ss.stat_name
|
||||
, SUM( ss.value-LEAST(ss_prev.value,ss.value))/&&DIVIDER value_clusterwide
|
||||
, SUM(DECODE(ss.instance_number, 1, ss.value-LEAST(ss_prev.value,ss.value), 0))/&&DIVIDER value_inst1
|
||||
, SUM(DECODE(ss.instance_number, 2, ss.value-LEAST(ss_prev.value,ss.value), 0))/&&DIVIDER value_inst2
|
||||
, SUM(DECODE(ss.instance_number, 3, ss.value-LEAST(ss_prev.value,ss.value), 0))/&&DIVIDER value_inst3
|
||||
, SUM(DECODE(ss.instance_number, 4, ss.value-LEAST(ss_prev.value,ss.value), 0))/&&DIVIDER value_inst4
|
||||
, SUM(DECODE(ss.instance_number, 5, ss.value-LEAST(ss_prev.value,ss.value), 0))/&&DIVIDER value_inst5
|
||||
, SUM(DECODE(ss.instance_number, 6, ss.value-LEAST(ss_prev.value,ss.value), 0))/&&DIVIDER value_inst6
|
||||
, SUM(DECODE(ss.instance_number, 7, ss.value-LEAST(ss_prev.value,ss.value), 0))/&&DIVIDER value_inst7
|
||||
, SUM(DECODE(ss.instance_number, 8, ss.value-LEAST(ss_prev.value,ss.value), 0))/&&DIVIDER value_inst8
|
||||
FROM snap s
|
||||
, dba_hist_service_stat ss
|
||||
, dba_hist_service_stat ss_prev
|
||||
WHERE s.dbid = ss.dbid
|
||||
AND s.instance_number = ss.instance_number
|
||||
AND s.snap_id = ss.snap_id
|
||||
AND s.dbid = ss_prev.dbid
|
||||
AND s.instance_number = ss_prev.instance_number
|
||||
AND s.prev_snap_id = ss_prev.snap_id
|
||||
AND ss.service_name = ss_prev.service_name
|
||||
AND ss.stat_name = ss_prev.stat_name
|
||||
AND UPPER(ss.service_name) LIKE UPPER('&&service_name') ESCAPE '\'
|
||||
AND UPPER(ss.stat_name) LIKE UPPER('&&stat_name') ESCAPE '\'
|
||||
GROUP BY TO_CHAR(s.end_interval_time,'DD-MON-YY HH24:MI')
|
||||
, ss.service_name
|
||||
, ss.stat_name
|
||||
ORDER BY TO_DATE(TO_CHAR(s.end_interval_time,'DD-MON-YY HH24:MI'),'DD-MON-YY HH24:MI')
|
||||
, ss.service_name
|
||||
, ss.stat_name
|
||||
;
|
||||
|
||||
UNDEFINE service_name
|
||||
UNDEFINE stat_name
|
||||
UNDEFINE from_timestamp
|
||||
UNDEFINE to_timestamp
|
||||
|
||||
|
||||
@@footer
|
||||
Reference in New Issue
Block a user