| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> Re: creating indexes script
I know this may look a bit messy but it works for me. Since you may only have up to 16 columns in an index you only have to do 16 MAX(DECODE... lines. Also, I use DBA_SEGMENTS to establish how big the initial extents should be. Notice that I'm using parallel query, therefore, I have multiple initial extents.
REM Doug Anderson 15-MAY-1997
select 'create ' ||
DECODE(max(i.uniqueness),'NONUNIQUE',null,max(i.uniqueness)) ||
' index ' || max(i.owner) || '.' || max(i.index_name) || '
on ' || max(i.table_owner) || '.' || max(i.table_name) || ' ('
||
MAX(DECODE(c.column_position,1,c.column_name,null)) ||
MAX(DECODE(c.column_position,2,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,3,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,4,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,5,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,6,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,7,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,8,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,9,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,10,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,11,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,12,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,13,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,14,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,15,(','||c.column_name),null)) ||
MAX(DECODE(c.column_position,16,(','||c.column_name),null)) ||
')' || '
pctfree ' || max(i.pct_free) || '
storage ( initial ' || ROUND(((max(s.bytes)/2)/1024)/1024) ||
'M next ' ||
max(i.next_extent) || ' pctincrease ' || max(i.pct_increase) ||
')
tablespace ' || max(i.tablespace_name) || '
unrecoverable
parallel (degree 2);'
from dba_indexes i, dba_segments s, dba_ind_columns c
where (i.owner = c.index_owner)
and (i.index_name = c.index_name)
and (i.owner = s.owner)
-Doug Anderson
DAtheDBA_at_mindspring.com
"Eric W. Worden" <eworden_at_worldramp.net> wrote:
>anyone have any experience rebuilding their indexes into other
>tablespaces? i'm working on a script, but i'm stuck when it comes to
>composite indexes and how to populate the columns' field in the create
>index statement. this is going to come in handy for 800 indexes.
>appreciate the help.
>script:
>select 'create index ' || U.index_name || ' on ' || U.table_name || ' ('
>||
> column_name || ', ) ' || 'tablespace MY_INDEXES '
>from user_indexes U, user_ind_columns C
>where U.index_name = C.index_name
>--
>+------------------------------+
>+ Eric Worden +
>+ eworden_at_worldramp.net +
>+ +
>+ 407-306-1343 +
>+------------------------------+
![]() |
![]() |