|   | 
					 
                                                                           1. tablespace used/free space: 
 
SELECT /* + RULE */  df.tablespace_name "Tablespace",  df.bytes / (1024 * 1024) "Size (MB)", 
       SUM(fs.bytes) / (1024 * 1024) "Free (MB)", Nvl(Round(SUM(fs.bytes) * 100 / df.bytes),1) "% Free", Round((df.bytes - SUM(fs.bytes)) * 100 / df.bytes) "% Used" 
  FROM dba_free_space fs, (SELECT tablespace_name,SUM(bytes) bytes 
          FROM dba_data_files 
         GROUP BY tablespace_name) df 
 WHERE fs.tablespace_name (+)  = df.tablespace_name 
 GROUP BY df.tablespace_name,df.bytes 
UNION ALL 
SELECT /* + RULE */ df.tablespace_name tspace, 
       fs.bytes / (1024 * 1024), SUM(df.bytes_free) / (1024 * 1024), Nvl(Round((SUM(fs.bytes) - df.bytes_used) * 100 / fs.bytes), 1), Round((SUM(fs.bytes) - df.bytes_free) * 100 / fs.bytes) 
  FROM dba_temp_files fs, (SELECT tablespace_name,bytes_free,bytes_used 
          FROM v$temp_space_header 
         GROUP BY tablespace_name,bytes_free,bytes_used) df 
 WHERE fs.tablespace_name (+)  = df.tablespace_name 
 GROUP BY df.tablespace_name,fs.bytes,df.bytes_free,df.bytes_used 
 ORDER BY 4 DESC; 
 
2. Track all Tablespaces with free space < 10% 
 
Select a.tablespace_name,sum(a.tots/1048576) Tot_Size, sum(a.sumb/1024) Tot_Free, sum(a.sumb)*100/sum(a.tots) Pct_Free, ceil((((sum(a.tots) * 15) - (sum(a.sumb)*100))/85 )/1048576) Min_Add 
from (select tablespace_name,0 tots,sum(bytes) sumb 
from dba_free_space a 
group by tablespace_name 
union 
Select tablespace_name,sum(bytes) tots,0 from dba_data_files 
group by tablespace_name) a group by a.tablespace_name 
having sum(a.sumb)*100/sum(a.tots) < 10 
order by pct_free; 
 
3. Track Non-Sys owned tables in SYSTEM Tablespace: 
SELECT owner, table_name, tablespace_name FROM dba_tables WHERE tablespace_name = 'SYSTEM' AND owner NOT IN ('SYSTEM', 'SYS', 'OUTLN'); 
 
4. Track DB datafile used and free space: 
SELECT SUBSTR (df.NAME, 1, 40) file_name,dfs.tablespace_name, df.bytes / 1024 / 1024 allocated_mb, ((df.bytes / 1024 / 1024) -  NVL (SUM (dfs.bytes) / 1024 / 1024, 0)) used_mb, 
NVL (SUM (dfs.bytes) / 1024 / 1024, 0) free_space_mb 
FROM v$datafile df, dba_free_space dfs 
WHERE df.file# = dfs.file_id(+) 
GROUP BY dfs.file_id, df.NAME, df.file#, df.bytes,dfs.tablespace_name 
ORDER BY file_name; 
 
5. Track Datafiles with highest I/O activity: 
Select * from (select name,phyrds, phywrts,readtim,writetim 
from v$filestat a, v$datafile b 
where a.file#=b.file# 
order by readtim desc) where rownum <6; 
 
6. Checking  Autoextend ON/OFF for Datafile: 
select substr(file_name,1,50), AUTOEXTENSIBLE from dba_data_files 
‎select tablespace_name,AUTOEXTENSIBLE from dba_data_files; 
 
7. Track Temp Segment Free space: 
SELECT tablespace_name, SUM(bytes_used/1024/1024) USED, SUM(bytes_free/1024/1024) FREE 
FROM   V$temp_space_header 
GROUP  BY tablespace_name; 
SELECT   A.tablespace_name tablespace, D.mb_total, 
         SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_used, 
         D.mb_total - SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_free 
FROM  v$sort_segment A, (SELECT   B.name, C.block_size, SUM (C.bytes) / 1024 / 1024 mb_total 
         FROM     v$tablespace B, v$tempfile C 
         WHERE    B.ts#= C.ts# 
         GROUP BY B.name, C.block_size ) D 
WHERE    A.tablespace_name = D.name 
GROUP by A.tablespace_name, D.mb_total; 
 
8. Track Who is Currently using the Temp: 
SELECT b.tablespace, ROUND(((b.blocks*p.value)/1024/1024),2)||'M' "SIZE", 
a.sid||','||a.serial# SID_SERIAL, a.username, a.program 
FROM sys.v_$session a, sys.v_$sort_usage b, sys.v_$parameter p 
WHERE p.name  = 'db_block_size' AND a.saddr = b.session_addr 
ORDER BY b.tablespace, b.blocks; 
						 
						 |