Hi there,
This is a script that i loaded from the web and use to monitor our table and index extents. copy & paste into notepad and save as sql file. Use SQL plus to run it daily or weekly depends on how heavy your db traffic is. I hope it help you.

/* Viewing Critical Object Extents
This select shows all objects, tables, or indexes, the number of extents allocated, the max
number of extents allocable and the number of extents again possible before the Oracle error.
The having statement restricts the output. */

SPOOL CRITICAL_OBJECT_EXTENTS.TXT
set echo off
set pages 37
set lines 100
set feedback off
tti '------------CRITICAL_OBJECT_EXTENTS----------------'

col name format a28
col type format a8
col sum_kbytes format 999999999
col man_ext format a3
col ext_poss format 99
col tbs format a10
col owner format a9
col num_ext format 999

select ext.owner,
segment_name name,
segment_type type,
sum(bytes)/1024 sum_kbytes,
count(bytes) num_ext,
decode(segment_type, 'TABLE', tab.max_extents,
'INDEX', ind.max_extents) max_ext,
decode(segment_type, 'TABLE', tab.max_extents,
'INDEX', ind.max_extents) -
count(bytes) ext_poss ,
ext.tablespace_name tbs
from dba_indexes ind,
dba_tables tab,
dba_extents ext
where ind.owner (+) = ext.owner
and ind.index_name (+) = ext.segment_name
and tab.owner (+) = ext.owner
and tab.table_name (+) = ext.segment_name
and ext.owner not in ('SYS', 'SYSTEM')
group by ext.owner,
segment_name,
segment_type,
decode(segment_type, 'TABLE', tab.max_extents,
'INDEX', ind.max_extents),
ext.tablespace_name
having decode(segment_type, 'TABLE', tab.max_extents,
'INDEX', ind.max_extents) -
count(bytes) < 60
or count(bytes) > 300;
SPOOL OFF
set echo on
set feedback on
tti off