2026-03-12 20:23:15
This commit is contained in:
124
vdh/overallocated_df.sql
Normal file
124
vdh/overallocated_df.sql
Normal file
@@ -0,0 +1,124 @@
|
||||
-- list all datafiles with more than 50% free space (calculated against the current size, not the maxsize) and for which the free space is more than 10GB
|
||||
-- and include the datafile high water mark in the output
|
||||
|
||||
set pagesize 999
|
||||
set linesize 200
|
||||
set verify off
|
||||
|
||||
|
||||
column tablespace_name format a30 heading "tbs name"
|
||||
column file_id format 9999 heading "file"
|
||||
column df_curr_size_mb format 9G999G999G990D99 heading "curr df size (mb)"
|
||||
column df_max_size_mb format 9G999G999G990D99 heading "max df size (mb)"
|
||||
column df_used_size_mb format 9G999G999G990D99 heading "used df size (mb)"
|
||||
column df_free_size_mb format 9G999g999g990D99 heading "df free (mb)"
|
||||
column df_pct_free format 990D99 heading "df free (%)"
|
||||
column df_hwm_block_id format 9999999999999 heading "hwm block id"
|
||||
column df_hwm_mb format 9G999G999G990D99 heading "df hwm (mb)"
|
||||
column df_headspace_mb format 9G999g999g990D99 heading "df headspace (mb)"
|
||||
|
||||
|
||||
break on tablespace_name skip 1 on report
|
||||
|
||||
compute sum of df_curr_size_mb on tablespace_name
|
||||
compute sum of df_curr_size_mb on report
|
||||
compute sum of df_max_size_mb on tablespace_name
|
||||
compute sum of df_free_size_mb on tablespace_name
|
||||
compute sum of df_free_size_mb on report
|
||||
compute sum of df_used_size_mb on tablespace_name
|
||||
compute sum of df_used_size_mb on report
|
||||
compute sum of df_headspace_mb on tablespace_name
|
||||
compute sum of df_headspace_mb on report
|
||||
|
||||
with
|
||||
df as
|
||||
( select
|
||||
tablespace_name,
|
||||
file_id,
|
||||
bytes,
|
||||
maxbytes
|
||||
from
|
||||
dba_data_files
|
||||
union all
|
||||
select
|
||||
tablespace_name,
|
||||
file_id,
|
||||
bytes,
|
||||
maxbytes
|
||||
from
|
||||
dba_temp_files
|
||||
),
|
||||
high_block as
|
||||
( select
|
||||
file_id,
|
||||
max(block_id) m_block_id
|
||||
from
|
||||
dba_extents
|
||||
group by
|
||||
file_id
|
||||
),
|
||||
hwm as
|
||||
( select
|
||||
df.file_id,
|
||||
hb.m_block_id df_hwm_block_id,
|
||||
((ext.block_id +(ext.blocks-1)) * tbs.block_size) df_hwm_bytes,
|
||||
(df.bytes - ((ext.block_id+(ext.blocks-1)) * tbs.block_size)) df_headspace_bytes
|
||||
from
|
||||
dba_extents ext,
|
||||
high_block hb,
|
||||
df,
|
||||
dba_tablespaces tbs
|
||||
where
|
||||
df.file_id = hb.file_id
|
||||
and ext.file_id = hb.file_id
|
||||
and ext.block_id = hb.m_block_id
|
||||
and tbs.tablespace_name = ext.tablespace_name
|
||||
),
|
||||
df_usage as
|
||||
( select
|
||||
df.tablespace_name,
|
||||
df.file_id,
|
||||
df.bytes df_curr_size,
|
||||
greatest(df.maxbytes,df.bytes) df_max_size,
|
||||
(df.bytes - nvl(fs.bytes,0)) df_used,
|
||||
nvl(fs.bytes,0) df_free,
|
||||
100 * (nvl(fs.bytes,0) / df.bytes) df_pct_free
|
||||
from
|
||||
df,
|
||||
( select
|
||||
tablespace_name,
|
||||
file_id,
|
||||
sum(bytes) bytes
|
||||
from
|
||||
dba_free_space
|
||||
group by
|
||||
tablespace_name,
|
||||
file_id
|
||||
) fs
|
||||
where
|
||||
df.tablespace_name = fs.tablespace_name(+)
|
||||
)
|
||||
select
|
||||
dfu.tablespace_name,
|
||||
dfu.file_id,
|
||||
(dfu.df_curr_size/1024/1024) df_curr_size_mb,
|
||||
(dfu.df_max_size/1024/1024) df_max_size_mb,
|
||||
(dfu.df_used/1024/1024) df_used_size_mb,
|
||||
(dfu.df_free/1024/1024) df_free_size_mb,
|
||||
dfu.df_pct_free,
|
||||
hwm.df_hwm_block_id,
|
||||
(hwm.df_hwm_bytes/1024/1024) df_hwm_mb,
|
||||
(hwm.df_headspace_bytes/1024/1024) df_headspace_mb
|
||||
from
|
||||
df_usage dfu,
|
||||
hwm
|
||||
where
|
||||
dfu.file_id = hwm.file_id
|
||||
and dfu.df_pct_free > 50
|
||||
and (dfu.df_curr_size - dfu.df_used) > 10 * 1024 * 1024 * 1024
|
||||
order by
|
||||
df_headspace_bytes desc
|
||||
;
|
||||
|
||||
clear breaks
|
||||
clear computes
|
||||
Reference in New Issue
Block a user