If you’re a freak who work around with Oracle as backend, you would face the sitution where the oracle temporary space would be exhausted.
The usage temporary tablespace can’t be found out exactly using DBA_FREE_SPACE. To find out the true value of temporary table space we may need to use V$TEMP_SPACE_HEADER data dictonary.
SELECT tablespace_name, SUM (bytes_used), SUM (bytes_free) FROM v$temp_space_header GROUP BY tablespace_name;
If you’re looking out to find out the usage of other table space we need to use the following script.
CLEAR SET HEAD ON SET VERIFY OFF SPOOL file COL tspace form a25 Heading "Tablespace" COL tot_ts_size form 99999999999999 Heading "Size (Mb)" COL free_ts_size form 99999999999999 Heading "Free (Mb)" COL ts_pct form 9999 Heading "% Free" COL ts_pct1 form 9999 Heading "% Used" BREAK on report COMPUTE sum of free_ts_size on report COMPUTE sum of tot_ts_size on report SELECT /* + RULE */ df.tablespace_name tspace, df.BYTES / (1024 * 1024) tot_ts_size, SUM (fs.BYTES) / (1024 * 1024) free_ts_size, NVL (ROUND (SUM (fs.BYTES) * 100 / df.BYTES), 1) ts_pct, ROUND ((df.BYTES - SUM (fs.BYTES)) * 100 / df.BYTES) ts_pct1 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) tot_ts_size, SUM (df.bytes_free) / (1024 * 1024) free_ts_size, NVL (ROUND ((SUM (fs.BYTES) - df.bytes_used) * 100 / fs.BYTES), 1 ) ts_pct, ROUND ((SUM (fs.BYTES) - df.bytes_free) * 100 / fs.BYTES) ts_pct1 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 / SPOOL off
To find the size of table different technique has to be used.