HANA Disks DiskUsage 2.00.000+
HANA Disks DiskUsage 2.00.000+
HANA Disks DiskUsage 2.00.000+
/*
[NAME]
- HANA_Disks_DiskUsage_2.00.000+
[DESCRIPTION]
[SOURCE]
[VALID FOR]
[INVOLVED TABLES]
- M_DISK_USAGE
- TEL_DISK_USAGE
[INPUT PARAMETERS]
- BEGIN_TIME
Begin time
'2018/12/05 14:05:00' --> Set begin time to 5th of December 2018, 14:05
'C' --> Set begin time to current time
'C-S900' --> Set begin time to current time minus 900 seconds
'C-M15' --> Set begin time to current time minus 15 minutes
'C-H5' --> Set begin time to current time minus 5 hours
'C-D1' --> Set begin time to current time minus 1 day
'C-W4' --> Set begin time to current time minus 4 weeks
'E-S900' --> Set begin time to end time minus 900 seconds
'E-M15' --> Set begin time to end time minus 15 minutes
'E-H5' --> Set begin time to end time minus 5 hours
'E-D1' --> Set begin time to end time minus 1 day
'E-W4' --> Set begin time to end time minus 4 weeks
'MIN' --> Set begin time to minimum (1000/01/01 00:00:00)
- END_TIME
End time
'2018/12/08 14:05:00' --> Set end time to 8th of December 2018, 14:05
'C' --> Set end time to current time
'C-S900' --> Set end time to current time minus 900 seconds
'C-M15' --> Set end time to current time minus 15 minutes
'C-H5' --> Set end time to current time minus 5 hours
'C-D1' --> Set end time to current time minus 1 day
'C-W4' --> Set end time to current time minus 4 weeks
'B+S900' --> Set end time to begin time plus 900 seconds
'B+M15' --> Set end time to begin time plus 15 minutes
'B+H5' --> Set end time to begin time plus 5 hours
'B+D1' --> Set end time to begin time plus 1 day
'B+W4' --> Set end time to begin time plus 4 weeks
'MAX' --> Set end time to maximum (9999/12/31 23:59:59)
- TIMEZONE
- DATA_SOURCE
- TIME_AGGREGATE_BY
[OUTPUT PARAMETERS]
[EXAMPLE OUTPUT]
-----------------------------------------------------------------------------------
-------------------
|SAMPLE_TIME |DATA_GB |LOG_GB |DATA_BKP_GB|LOG_BKP_GB |CAT_BKP_GB |
TRACE_GB |RK_BKP_GB |
-----------------------------------------------------------------------------------
-------------------
|2018/10/18 (THU)| 1.70| 0.12| 0.00| 2.11| 2.11|
0.02| 0.00|
|2018/10/17 (WED)| 1.70| 0.12| 0.00| 1.48| 1.48|
0.01| 0.00|
|2018/10/16 (TUE)| 1.70| 0.12| 0.00| 0.85| 0.85|
0.01| 0.00|
|2018/10/15 (MON)| 0.46| 0.31| 0.00| 0.00| 0.00|
0.00| 0.00|
-----------------------------------------------------------------------------------
-------------------
*/
SAMPLE_TIME,
LPAD(TO_DECIMAL(DATA_GB, 10, 2), 11) DATA_GB,
LPAD(TO_DECIMAL(LOG_GB, 10, 2), 11) LOG_GB,
LPAD(TO_DECIMAL(DATA_BACKUP_GB, 10, 2), 11) DATA_BKP_GB,
LPAD(TO_DECIMAL(LOG_BACKUP_GB, 10, 2), 11) LOG_BKP_GB,
LPAD(TO_DECIMAL(CATALOG_BACKUP_GB, 10, 2), 11) CAT_BKP_GB,
LPAD(TO_DECIMAL(TRACE_GB, 10, 2), 11) TRACE_GB,
LPAD(TO_DECIMAL(ROOTKEY_BACKUP_GB, 10, 2), 11) RK_BKP_GB
FROM
( SELECT
CASE
WHEN BI.TIME_AGGREGATE_BY LIKE 'TS%' THEN
TO_VARCHAR(ADD_SECONDS(TO_TIMESTAMP('2014/01/01 00:00:00', 'YYYY/MM/DD
HH24:MI:SS'), FLOOR(SECONDS_BETWEEN(TO_TIMESTAMP('2014/01/01 00:00:00',
'YYYY/MM/DD HH24:MI:SS'), CASE BI.TIMEZONE WHEN 'UTC' THEN
ADD_SECONDS(DU.SAMPLE_TIME, SECONDS_BETWEEN(CURRENT_TIMESTAMP,
CURRENT_UTCTIMESTAMP)) ELSE DU.SAMPLE_TIME END) / SUBSTR(BI.TIME_AGGREGATE_BY, 3))
* SUBSTR(BI.TIME_AGGREGATE_BY, 3)), 'YYYY/MM/DD HH24:MI:SS')
ELSE TO_VARCHAR(CASE BI.TIMEZONE WHEN 'UTC' THEN ADD_SECONDS(DU.SAMPLE_TIME,
SECONDS_BETWEEN(CURRENT_TIMESTAMP, CURRENT_UTCTIMESTAMP)) ELSE DU.SAMPLE_TIME END,
BI.TIME_AGGREGATE_BY)
END SAMPLE_TIME,
AVG(DATA) / 1024 / 1024 / 1024 DATA_GB,
AVG(LOG) / 1024 / 1024 / 1024 LOG_GB,
AVG(DATA_BACKUP) / 1024 / 1024 / 1024 DATA_BACKUP_GB,
AVG(LOG_BACKUP) / 1024 / 1024 / 1024 LOG_BACKUP_GB,
AVG(CATALOG_BACKUP) / 1024 / 1024 / 1024 CATALOG_BACKUP_GB,
AVG(TRACE) / 1024 / 1024 / 1024 TRACE_GB,
AVG(ROOTKEY_BACKUP) / 1024 / 1024 / 1024 ROOTKEY_BACKUP_GB
FROM
( SELECT
CASE
WHEN BEGIN_TIME = 'C' THEN CURRENT_TIMESTAMP
WHEN BEGIN_TIME LIKE 'C-S%' THEN
ADD_SECONDS(CURRENT_TIMESTAMP, -SUBSTR_AFTER(BEGIN_TIME, 'C-S'))
WHEN BEGIN_TIME LIKE 'C-M%' THEN
ADD_SECONDS(CURRENT_TIMESTAMP, -SUBSTR_AFTER(BEGIN_TIME, 'C-M') * 60)
WHEN BEGIN_TIME LIKE 'C-H%' THEN
ADD_SECONDS(CURRENT_TIMESTAMP, -SUBSTR_AFTER(BEGIN_TIME, 'C-H') * 3600)
WHEN BEGIN_TIME LIKE 'C-D%' THEN
ADD_SECONDS(CURRENT_TIMESTAMP, -SUBSTR_AFTER(BEGIN_TIME, 'C-D') * 86400)
WHEN BEGIN_TIME LIKE 'C-W%' THEN
ADD_SECONDS(CURRENT_TIMESTAMP, -SUBSTR_AFTER(BEGIN_TIME, 'C-W') * 86400 * 7)
WHEN BEGIN_TIME LIKE 'E-S%' THEN
ADD_SECONDS(TO_TIMESTAMP(END_TIME, 'YYYY/MM/DD HH24:MI:SS'), -
SUBSTR_AFTER(BEGIN_TIME, 'E-S'))
WHEN BEGIN_TIME LIKE 'E-M%' THEN
ADD_SECONDS(TO_TIMESTAMP(END_TIME, 'YYYY/MM/DD HH24:MI:SS'), -
SUBSTR_AFTER(BEGIN_TIME, 'E-M') * 60)
WHEN BEGIN_TIME LIKE 'E-H%' THEN
ADD_SECONDS(TO_TIMESTAMP(END_TIME, 'YYYY/MM/DD HH24:MI:SS'), -
SUBSTR_AFTER(BEGIN_TIME, 'E-H') * 3600)
WHEN BEGIN_TIME LIKE 'E-D%' THEN
ADD_SECONDS(TO_TIMESTAMP(END_TIME, 'YYYY/MM/DD HH24:MI:SS'), -
SUBSTR_AFTER(BEGIN_TIME, 'E-D') * 86400)
WHEN BEGIN_TIME LIKE 'E-W%' THEN
ADD_SECONDS(TO_TIMESTAMP(END_TIME, 'YYYY/MM/DD HH24:MI:SS'), -
SUBSTR_AFTER(BEGIN_TIME, 'E-W') * 86400 * 7)
WHEN BEGIN_TIME = 'MIN' THEN
TO_TIMESTAMP('1000/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS')
WHEN SUBSTR(BEGIN_TIME, 1, 1) NOT IN ('C', 'E', 'M') THEN
TO_TIMESTAMP(BEGIN_TIME, 'YYYY/MM/DD HH24:MI:SS')
END BEGIN_TIME,
CASE
WHEN END_TIME = 'C' THEN CURRENT_TIMESTAMP
WHEN END_TIME LIKE 'C-S%' THEN
ADD_SECONDS(CURRENT_TIMESTAMP, -SUBSTR_AFTER(END_TIME, 'C-S'))
WHEN END_TIME LIKE 'C-M%' THEN
ADD_SECONDS(CURRENT_TIMESTAMP, -SUBSTR_AFTER(END_TIME, 'C-M') * 60)
WHEN END_TIME LIKE 'C-H%' THEN
ADD_SECONDS(CURRENT_TIMESTAMP, -SUBSTR_AFTER(END_TIME, 'C-H') * 3600)
WHEN END_TIME LIKE 'C-D%' THEN
ADD_SECONDS(CURRENT_TIMESTAMP, -SUBSTR_AFTER(END_TIME, 'C-D') * 86400)
WHEN END_TIME LIKE 'C-W%' THEN
ADD_SECONDS(CURRENT_TIMESTAMP, -SUBSTR_AFTER(END_TIME, 'C-W') * 86400 * 7)
WHEN END_TIME LIKE 'B+S%' THEN
ADD_SECONDS(TO_TIMESTAMP(BEGIN_TIME, 'YYYY/MM/DD HH24:MI:SS'),
SUBSTR_AFTER(END_TIME, 'B+S'))
WHEN END_TIME LIKE 'B+M%' THEN
ADD_SECONDS(TO_TIMESTAMP(BEGIN_TIME, 'YYYY/MM/DD HH24:MI:SS'),
SUBSTR_AFTER(END_TIME, 'B+M') * 60)
WHEN END_TIME LIKE 'B+H%' THEN
ADD_SECONDS(TO_TIMESTAMP(BEGIN_TIME, 'YYYY/MM/DD HH24:MI:SS'),
SUBSTR_AFTER(END_TIME, 'B+H') * 3600)
WHEN END_TIME LIKE 'B+D%' THEN
ADD_SECONDS(TO_TIMESTAMP(BEGIN_TIME, 'YYYY/MM/DD HH24:MI:SS'),
SUBSTR_AFTER(END_TIME, 'B+D') * 86400)
WHEN END_TIME LIKE 'B+W%' THEN
ADD_SECONDS(TO_TIMESTAMP(BEGIN_TIME, 'YYYY/MM/DD HH24:MI:SS'),
SUBSTR_AFTER(END_TIME, 'B+W') * 86400 * 7)
WHEN END_TIME = 'MAX' THEN
TO_TIMESTAMP('9999/12/31 00:00:00', 'YYYY/MM/DD HH24:MI:SS')
WHEN SUBSTR(END_TIME, 1, 1) NOT IN ('C', 'B', 'M') THEN
TO_TIMESTAMP(END_TIME, 'YYYY/MM/DD HH24:MI:SS')
END END_TIME,
TIMEZONE,
DATA_SOURCE,
MAP(TIME_AGGREGATE_BY,
'NONE', 'YYYY/MM/DD HH24:MI:SS:FF7',
'HOUR', 'YYYY/MM/DD HH24',
'DAY', 'YYYY/MM/DD (DY)',
'HOUR_OF_DAY', 'HH24',
TIME_AGGREGATE_BY ) TIME_AGGREGATE_BY
FROM
( SELECT /* Modification section */
'1000/10/18 07:58:00' BEGIN_TIME, /* YYYY/MM/DD HH24:MI:SS
timestamp, C, C-S<seconds>, C-M<minutes>, C-H<hours>, C-D<days>, C-W<weeks>, E-
S<seconds>, E-M<minutes>, E-H<hours>, E-D<days>, E-W<weeks>, MIN */
'9999/10/18 08:05:00' END_TIME, /* YYYY/MM/DD HH24:MI:SS
timestamp, C, C-S<seconds>, C-M<minutes>, C-H<hours>, C-D<days>, C-W<weeks>,
B+S<seconds>, B+M<minutes>, B+H<hours>, B+D<days>, B+W<weeks>, MAX */
'SERVER' TIMEZONE, /* SERVER, UTC */
'HISTORY' DATA_SOURCE, /* CURRENT, HISTORY */
'DAY' TIME_AGGREGATE_BY /* HOUR, DAY, HOUR_OF_DAY or database time
pattern, TS<seconds> for time slice, NONE for no aggregation */
FROM
DUMMY
)
) BI,
( SELECT
'CURRENT' DATA_SOURCE,
CURRENT_TIMESTAMP SAMPLE_TIME,
SUM(MAP(USAGE_TYPE, 'DATA', USED_SIZE, 0)) DATA,
SUM(MAP(USAGE_TYPE, 'LOG', USED_SIZE, 0)) LOG,
SUM(MAP(USAGE_TYPE, 'DATA_BACKUP', USED_SIZE, 0)) DATA_BACKUP,
SUM(MAP(USAGE_TYPE, 'LOG_BACKUP', USED_SIZE, 0)) LOG_BACKUP,
SUM(MAP(USAGE_TYPE, 'TRACE', USED_SIZE, 0)) TRACE,
SUM(MAP(USAGE_TYPE, 'CATALOG_BACKUP', USED_SIZE, 0)) CATALOG_BACKUP,
SUM(MAP(USAGE_TYPE, 'ROOTKEY_BACKUP', USED_SIZE, 0)) ROOTKEY_BACKUP
FROM
M_DISK_USAGE
UNION ALL
SELECT
'HISTORY' DATA_SOURCE,
SERVER_TIMESTAMP SAMPLE_TIME,
SUM(MAP(USAGE_TYPE, 'DATA', USED_SIZE, 0)) DATA,
SUM(MAP(USAGE_TYPE, 'LOG', USED_SIZE, 0)) LOG,
SUM(MAP(USAGE_TYPE, 'DATA_BACKUP', USED_SIZE, 0)) DATA_BACKUP,
SUM(MAP(USAGE_TYPE, 'LOG_BACKUP', USED_SIZE, 0)) LOG_BACKUP,
SUM(MAP(USAGE_TYPE, 'TRACE', USED_SIZE, 0)) TRACE,
SUM(MAP(USAGE_TYPE, 'CATALOG_BACKUP', USED_SIZE, 0)) CATALOG_BACKUP,
SUM(MAP(USAGE_TYPE, 'ROOTKEY_BACKUP', USED_SIZE, 0)) ROOTKEY_BACKUP
FROM
_SYS_STATISTICS.TEL_DISK_USAGE
GROUP BY
SERVER_TIMESTAMP
) DU
WHERE
CASE BI.TIMEZONE WHEN 'UTC' THEN ADD_SECONDS(DU.SAMPLE_TIME,
SECONDS_BETWEEN(CURRENT_TIMESTAMP, CURRENT_UTCTIMESTAMP)) ELSE DU.SAMPLE_TIME END
BETWEEN BI.BEGIN_TIME AND BI.END_TIME AND
DU.DATA_SOURCE = BI.DATA_SOURCE
GROUP BY
CASE
WHEN BI.TIME_AGGREGATE_BY LIKE 'TS%' THEN
TO_VARCHAR(ADD_SECONDS(TO_TIMESTAMP('2014/01/01 00:00:00', 'YYYY/MM/DD
HH24:MI:SS'), FLOOR(SECONDS_BETWEEN(TO_TIMESTAMP('2014/01/01 00:00:00',
'YYYY/MM/DD HH24:MI:SS'), CASE BI.TIMEZONE WHEN 'UTC' THEN
ADD_SECONDS(DU.SAMPLE_TIME, SECONDS_BETWEEN(CURRENT_TIMESTAMP,
CURRENT_UTCTIMESTAMP)) ELSE DU.SAMPLE_TIME END) / SUBSTR(BI.TIME_AGGREGATE_BY, 3))
* SUBSTR(BI.TIME_AGGREGATE_BY, 3)), 'YYYY/MM/DD HH24:MI:SS')
ELSE TO_VARCHAR(CASE BI.TIMEZONE WHEN 'UTC' THEN ADD_SECONDS(DU.SAMPLE_TIME,
SECONDS_BETWEEN(CURRENT_TIMESTAMP, CURRENT_UTCTIMESTAMP)) ELSE DU.SAMPLE_TIME END,
BI.TIME_AGGREGATE_BY)
END
)
ORDER BY
SAMPLE_TIME DESC