Cheeky Cockatoo

Life Advice and Stories, Travel, Oracle Tech, Good Food and More

block_usage.sql

Download Script

set feedback off
set verify off
set echo off
set linesize 100
set pages 66
define db = &&1
define outfile = &&2

column table_name       format a30              heading "Table Name"
column num_rows		format 9,999,999,999	heading "No. Rows"
column bytes_col	format 9,999,999   	heading "Used|KBytes"
column empty_col	format 99,999    	heading "Empty|KBytes"
column ratio            format 999.9            heading "Pct|Free"
column avg_space	format 9,999	        heading "Avg|Free|Bytes/|Block"
column chain_cnt	format 999,999		heading "Chain|Count"
column avg_row_len	format 99,999		heading "Avg|Row|Len"

column ts noprint new_val ts_name
column today noprint new_value datevar
break on ts skip 2 page
ttitle left 'Analysis of Block Usage for: ' ts_name right datevar

spool &&outfile
select  tablespace_name ts,
        to_char(sysdate,'DD-MON-YYYY HH:MM') today,
	table_name,
	num_rows, 
	(blocks*2048)/1000 bytes_col, 
	(empty_blocks*2048)/1000 empty_col, 	
        decode(blocks,0,100,(empty_blocks/(empty_blocks+blocks))*100) ratio,
	avg_space, 	
	chain_cnt, 
	avg_row_len
from dba_tables 
where tablespace_name not like '%TEMP%' and 
      tablespace_name not like '%ROLLBACK%' 
and   num_rows is not null
order by tablespace_name,table_name;

spool off

exit