PROMPT
PROMPT ===============================================================
PROMPT SECTION 2: TABLESPACE-WISE GROWTH (Excludes SYSTEM/UNDO/TEMP)
PROMPT ===============================================================
COLUMN begin_time FORMAT A30
COLUMN end_time FORMAT A30
COLUMN tablespace_name FORMAT A30
COLUMN size_mb FORMAT 999,999,999
COLUMN used_mb FORMAT 999,999,999
COLUMN growth_mb FORMAT 999,999,999
SELECT
dt.tablespace_name,
TO_CHAR(s1.begin_interval_time, 'YYYY-MM-DD HH24:MI:SS') AS begin_time,
TO_CHAR(s2.end_interval_time, 'YYYY-MM-DD HH24:MI:SS') AS end_time,
ROUND((e.tablespace_size * dt.block_size)/1024/1024) AS size_mb,
ROUND((e.tablespace_usedsize * dt.block_size)/1024/1024) AS used_mb,
ROUND(((e.tablespace_usedsize - b.tablespace_usedsize) * dt.block_size)/1024/1024) AS growth_mb
FROM
dba_hist_tbspc_space_usage b
JOIN
dba_hist_tbspc_space_usage e
ON b.tablespace_id = e.tablespace_id
JOIN
dba_hist_snapshot s1
ON b.snap_id = s1.snap_id AND b.dbid = s1.dbid AND b.instance_number = s1.instance_number
JOIN
dba_hist_snapshot s2
ON e.snap_id = s2.snap_id AND e.dbid = s2.dbid AND e.instance_number = s2.instance_number
JOIN
dba_tablespaces dt
ON b.tablespace_id = dt.ts#
WHERE
s1.begin_interval_time BETWEEN SYSDATE - &num_days AND SYSDATE
AND b.snap_id < e.snap_id
AND dt.tablespace_name NOT IN ('SYSTEM', 'SYSAUX')
AND dt.tablespace_name NOT LIKE 'UNDO%'
AND dt.tablespace_name NOT LIKE 'TEMP%'
AND ROWNUM = 1
ORDER BY
dt.tablespace_name;