create table SPACE_TEMP (
TABLESPACE_NAME CHAR(30),
CONTIGUOUS_BYTES NUMBER)
/
declare
cursor query is select *
from dba_free_space
order by tablespace_name, block_id;
this_row query%rowtype;
previous_row query%rowtype;
total number;
begin
open query;
fetch query into this_row;
previous_row := this_row;
total := previous_row.bytes;
loop
fetch query into this_row;
exit when query%notfound;
if this_row.block_id = previous_row.block_id + previous_row.blocks then
total := total + this_row.bytes;
insert into SPACE_TEMP (tablespace_name)
values (previous_row.tablespace_name);
else
insert into SPACE_TEMP values (previous_row.tablespace_name,
total);
total := this_row.bytes;
end if;
previous_row := this_row;
end loop;
insert into SPACE_TEMP values (previous_row.tablespace_name,
total);
end;
.
/
set pagesize 60
set newpage 0
set echo off
ttitle center 'Contiguous Extents Report' skip 3
break on "TABLESPACE NAME" skip page duplicate
spool contig_free_space.lis
rem
column "CONTIGUOUS BYTES" format 999,999,999,999
column "COUNT" format 999
column "TOTAL BYTES" format 999,999,999,999
column "TODAY" noprint new_value new_today format a1
rem
select TABLESPACE_NAME "TABLESPACE NAME",
CONTIGUOUS_BYTES "CONTIGUOUS BYTES"
from SPACE_TEMP
where CONTIGUOUS_BYTES is not null
order by TABLESPACE_NAME, CONTIGUOUS_BYTES desc;
select tablespace_name, count(*) "# OF EXTENTS",
sum(contiguous_bytes) "TOTAL BYTES"
from space_temp
group by tablespace_name;
spool off
drop table SPACE_TEMP
/
example output:
SQL> @TFSTSFRM
Table created.
PL/SQL procedure successfully completed.
Contiguous Extents Report
TABLESPACE NAME CONTIGUOUS BYTES
------------------------------ ----------------
EXAMPLE 32,768,000
Contiguous Extents Report
TABLESPACE NAME CONTIGUOUS BYTES
------------------------------ ----------------
SYSAUX 3,211,264
Contiguous Extents Report
TABLESPACE NAME CONTIGUOUS BYTES
------------------------------ ----------------
SYSTEM 371,130,368
SYSTEM 393,216
Contiguous Extents Report
TABLESPACE NAME CONTIGUOUS BYTES
------------------------------ ----------------
UNDOTBS1 13,500,416
UNDOTBS1 524,288
UNDOTBS1 458,752
UNDOTBS1 458,752
UNDOTBS1 327,680
UNDOTBS1 262,144
UNDOTBS1 196,608
UNDOTBS1 131,072
UNDOTBS1 131,072
UNDOTBS1 131,072
UNDOTBS1 65,536
UNDOTBS1 65,536
UNDOTBS1 65,536
UNDOTBS1 65,536
UNDOTBS1 65,536
UNDOTBS1 65,536
UNDOTBS1 65,536
Contiguous Extents Report
TABLESPACE NAME CONTIGUOUS BYTES
------------------------------ ----------------
USERS 10,995,367,936
USERS 1,048,576
USERS 393,216
USERS 262,144
USERS 196,608
26 rows selected.
Contiguous Extents Report
TABLESPACE_NAME # OF EXTENTS TOTAL BYTES
------------------------------ ------------ ----------------
EXAMPLE 1 32,768,000
UNDOTBS1 17 16,580,608
USERS 7 10,997,268,480
SYSAUX 1 3,211,264
SYSTEM 2 371,523,584
Table dropped.