scripts/collector/oracle/sql/extracts/statspack/awrhistsysmetrichist.sql (60 lines of code) (raw):

-- -- Copyright 2024 Google LLC -- -- Licensed under the Apache License, Version 2.0 (the "License"). -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- https://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- COLUMN HOUR FORMAT A4 COLUMN METRIC_UNIT FORMAT A15 spool &outputdir/opdb__awrhistsysmetrichist__&v_tag prompt PKEY|DBID|INSTANCE_NUMBER|HOUR|METRIC_NAME|METRIC_UNIT|AVG_VALUE|MODE_VALUE|MEDIAN_VALUE|MIN_VALUE|MAX_VALUE|SUM_VALUE|PERC50|PERC75|PERC90|PERC95|PERC100|DMA_SOURCE_ID|DMA_MANUAL_ID WITH vsysmetric AS ( SELECT :v_pkey AS pkey, hsm.dbid, hsm.instance_number, TO_CHAR(dhsnap.snap_time, 'hh24') hour, hsm.name as metric_name, null as metric_unit, ROUND(AVG(hsm.delta_value)) avg_value, ROUND(STATS_MODE(hsm.delta_value)) mode_value, ROUND(MEDIAN(hsm.delta_value)) median_value, ROUND(MIN(hsm.delta_value)) min_value, ROUND(MAX(hsm.delta_value)) max_value, ROUND(SUM(hsm.delta_value)) sum_value, ROUND(PERCENTILE_CONT(0.5) within GROUP (ORDER BY hsm.delta_value DESC)) AS "PERC50", ROUND(PERCENTILE_CONT(0.25) within GROUP (ORDER BY hsm.delta_value DESC)) AS "PERC75", ROUND(PERCENTILE_CONT(0.10) within GROUP (ORDER BY hsm.delta_value DESC)) AS "PERC90", ROUND(PERCENTILE_CONT(0.05) within GROUP (ORDER BY hsm.delta_value DESC)) AS "PERC95", ROUND(PERCENTILE_CONT(0) within GROUP (ORDER BY hsm.delta_value DESC)) AS "PERC100" FROM ( SELECT s.snap_id, s.dbid, s.instance_number, s.name, s.value, NVL( DECODE( GREATEST(value, NVL( LAG(value) OVER ( PARTITION BY s.dbid, s.instance_number, s.name ORDER BY s.snap_id), 0)), value, value - LAG(value) OVER ( PARTITION BY s.dbid, s.instance_number, s.name ORDER BY s.snap_id), 0), 0) AS delta_value FROM perfstat.stats$sysstat s ) hsm INNER JOIN stats$snapshot dhsnap ON hsm.snap_id = dhsnap.snap_id AND hsm.instance_number = dhsnap.instance_number AND hsm.dbid = dhsnap.dbid WHERE dhsnap.snap_time BETWEEN '&&v_min_snaptime' AND '&&v_max_snaptime' AND hsm.dbid = &&v_dbid GROUP BY :v_pkey, hsm.dbid, hsm.instance_number, TO_CHAR(dhsnap.snap_time, 'hh24'), hsm.name ORDER BY hsm.dbid, hsm.instance_number, hsm.name, TO_CHAR(dhsnap.snap_time, 'hh24')) SELECT pkey , dbid , instance_number , hour , metric_name , metric_unit , avg_value , mode_value , median_value , min_value , max_value , sum_value , PERC50 , PERC75 , PERC90 , PERC95 , PERC100, :v_dma_source_id AS DMA_SOURCE_ID, :v_manual_unique_id AS DMA_MANUAL_ID FROM vsysmetric; spool off COLUMN HOUR CLEAR COLUMN METRIC_UNIT CLEAR