Here's a script i made to rebuild index.
Just save the following in a .sql file and run it in sql plus.
sorry about the comment, there are in french.


--------------------------------------------------------------------

Prompt Ce script va maintenant vous montrer les indexes fragmentés.
Prompt Appuyer sur [ENTER] pour continuer...

pause;

CLEAR BREAK
CLEAR BUFFER
CLEAR COMPUTE
CLEAR COLUMN
CLEAR SQL

select segment_name, segment_type, extents, bytes
from dba_segments
where extents > 5
and segment_type = 'INDEX'
and owner = user
order by extents desc;

SET FEEDBACK OFF
SET TERMOUT OFF
SET LINESIZE 80
SET PAGESIZE 60
set heading off

SPOOL C:\REBUILD.SQL
select 'ALTER INDEX ' || rtrim(substr(segment_name,1,length(segment_name))) || ' REBUILD STORAGE (INITIAL ',
trunc(bytes / 1024 / 1024) + 1 || 'M NEXT 1M PCTINCREASE 0);'
from dba_segments
where extents > 5
and segment_type = 'INDEX'
and owner = user;
SPOOL OFF;

SET FEEDBACK ON
SET TERMOUT ON

Prompt Voici les modification qui vont être éffectués.
Prompt Appuyer sur [ENTER] pour continuer...

pause;

select 'ALTER INDEX ' || rtrim(substr(segment_name,1,length(segment_name))) || ' REBUILD STORAGE (INITIAL ',
trunc(bytes / 1024 / 1024) + 1 || 'M NEXT 1M PCTINCREASE 0);'
from dba_segments
where extents > 5
and segment_type = 'INDEX'
and owner = user;

Prompt Ce script va maintenant recréer les indexes fragmentés.
Prompt Appuyer sur [ENTER] pour continuer...

pause;

@C:\REBUILD.SQL

SET LINESIZE 1000
SET PAGESIZE 60

Prompt Terminer.
pause;

--------------------------------------------------------------------