modified on 29 July 2009 at 22:35 ••• 559 views

Get tablespace space metrics

From Oramosswiki

Jump to: navigation, search
--******************************************************************************
--*
--*  Description
--*  ***********
--*
--*  File:    get_tablespace_space_usage_metrics.sql
--*
--*  Description: This script shows the following metrics by tablespace:
--*                 Total tablespace size (GB)
--*                 Used segment size (GB)
--*                 Free size (GB) calculated as Total size - Used segment size
--*                 Free size based on DBA_FREE_SPACE.
--*
--* ----------------------------------------------------------------------------
--* Date         Author             Description
--* ===========  =================  ============================================
--* 27-JUL-2009  Jeff Moss          Created
--*
WITH ddf AS
(
SELECT tablespace_name
,      ROUND(SUM(bytes)/(1024*1024*1024)) size_gb
FROM   dba_data_files
GROUP BY tablespace_name
)
, ds AS
(
SELECT tablespace_name
,      ROUND(SUM(bytes/(1024*1024*1024))) used_size_gb
FROM   dba_segments
GROUP BY tablespace_name
)
, dfs AS
(
SELECT tablespace_name
,      ROUND(SUM(bytes/(1024*1024*1024))) free_size_gb
FROM   dba_free_space
GROUP BY tablespace_name
)
SELECT ddf.tablespace_name
,      ddf.size_gb total_size_gb
,      NVL(ds.used_size_gb,0) used_size_gb
,      (ddf.size_gb - NVL(ds.used_size_gb,0)) free_size_gb
,      NVL(dfs.free_size_gb,0) free_size_gb_dfs
FROM   ddf
,      ds
,      dfs
WHERE  ddf.tablespace_name = ds.tablespace_name(+)
AND    ddf.tablespace_name = dfs.tablespace_name(+)
ORDER BY ddf.tablespace_name
/