Files
oracle/star/arch_size_hourly_detail.sql
2026-03-12 21:23:47 +01:00

93 lines
3.9 KiB
SQL

set term off
/*
*
* Author : Vishal Gupta
* Purpose : Display hourly and daily redolog switches by size
* Parameters : None
*
* Revision History:
* ===================
* Date Author Description
* --------- ------------ -----------------------------------------
* 30-Dec-14 Vishal Gupta Added number of days as input parameter
* 18-Mar-14 Vishal Gupta Added separator columns for daily total
* 27-Feb-12 Vishal Gupta Formated the output and parameterized size granuality
* 05-Aug-04 Vishal Gupta First Draft
*
*/
set term on
/************************************
* INPUT PARAMETERS
************************************/
UNDEFINE days
DEFINE days="&&1"
set term off
COLUMN _DAYS NEW_VALUE DAYS NOPRINT
SELECT UPPER(DECODE('&&days','','2','&&days')) "_DAYS"
FROM DUAL;
set term on
/************************************
* CONFIGURATION PARAMETERS
************************************/
DEFINE size_label=MB
DEFINE size_divider="1024/1024"
--DEFINE size_label=GB
--DEFINE size_divider="1024/1024/1024"
DEFINE round_precision=2
PROMPT
PROMPT ************************************************************************
PROMPT * A R C H I V E L O G S W I T C H S U M M A R Y (By Size)
PROMPT * (Hourly and Daily figures in &&size_label)
PROMPT *
PROMPT * Input Parameters
PROMPT * - Days = '&&days'
PROMPT ************************************************************************
PROMPT
SET head on FEED off ECHO OFF LINES 1000 TRIMSPOOL ON TRIM on PAGES 1000
COLUMN separator HEADING "!|!|!" FORMAT A1
COLUMN "Date" HEADING "Date" FORMAT A12
COLUMN "Day" HEADING "Day" FORMAT A3
COLUMN "Total" HEADING "Hourly|Total|(&size_label)" FORMAT 9,999,999
COLUMN "M00" HEADING "Minutes|01-10 |(&size_label) " FORMAT 999,999
COLUMN "M10" HEADING "Minutes|11-20 |(&size_label) " FORMAT 999,999
COLUMN "M20" HEADING "Minutes|21-30 |(&size_label) " FORMAT 999,999
COLUMN "M30" HEADING "Minutes|31-40 |(&size_label) " FORMAT 999,999
COLUMN "M40" HEADING "Minutes|41-50 |(&size_label) " FORMAT 999,999
COLUMN "M50" HEADING "Minutes|51-60 |(&size_label) " FORMAT 999,999
SELECT TO_CHAR(trunc(COMPLETION_TIME,'HH24'),'DD-MON-YY HH24') "Date",
to_char(COMPLETION_TIME, 'Dy') "Day",
'|' separator,
ROUND(SUM(((BLOCKS * BLOCK_SIZE)/&&size_divider))) "Total",
'|' separator,
ROUND(SUM(CASE WHEN TO_NUMBER(to_char(COMPLETION_TIME, 'MI')) BETWEEN 01 AND 10 THEN ROUND((BLOCKS * BLOCK_SIZE)/&&size_divider) ELSE 0 END)) "M00",
ROUND(SUM(CASE WHEN TO_NUMBER(to_char(COMPLETION_TIME, 'MI')) BETWEEN 11 AND 20 THEN ROUND((BLOCKS * BLOCK_SIZE)/&&size_divider) ELSE 0 END)) "M10",
ROUND(SUM(CASE WHEN TO_NUMBER(to_char(COMPLETION_TIME, 'MI')) BETWEEN 21 AND 30 THEN ROUND((BLOCKS * BLOCK_SIZE)/&&size_divider) ELSE 0 END)) "M20",
ROUND(SUM(CASE WHEN TO_NUMBER(to_char(COMPLETION_TIME, 'MI')) BETWEEN 31 AND 40 THEN ROUND((BLOCKS * BLOCK_SIZE)/&&size_divider) ELSE 0 END)) "M30",
ROUND(SUM(CASE WHEN TO_NUMBER(to_char(COMPLETION_TIME, 'MI')) BETWEEN 41 AND 50 THEN ROUND((BLOCKS * BLOCK_SIZE)/&&size_divider) ELSE 0 END)) "M40",
ROUND(SUM(CASE WHEN TO_NUMBER(to_char(COMPLETION_TIME, 'MI')) BETWEEN 51 AND 60 THEN ROUND((BLOCKS * BLOCK_SIZE)/&&size_divider) ELSE 0 END)) "M50",
'|' separator
from v$archived_log
where standby_dest = 'NO'
and CREATOR IN ('ARCH' , 'FGRD')
AND completion_time > sysdate - &days
group by trunc(COMPLETION_TIME,'HH24'), to_char(COMPLETION_TIME, 'Dy')
order by trunc(COMPLETION_TIME,'HH24')
;