begin for rec in (select table_name from user_tables) loop execute immediate 'alter index '||rec.index_name||' rebuild'; end loop; end; /
begin for rec in (select index_name from user_indexes) loop execute immediate 'alter index '||rec.index_name||' rebuild'; end loop; end;不好意思哈,刚打错了,这段可以,有些表如果有约束,可能要先disable掉
通过系统表user_indexes就可以完成
1、SELECT * FROM USER_INDEXES 找到所有需要进行重建的索引. 2、ALTER INDEX USER_INDEXES.INDEX_NAME REBUILD;进行重建。SELECT 'ALTER INDEX '||USER_INDEXES.INDEX_NAME||' REBUILD;' FROM ALL_INDEXES; 得到的结果整列复制到某个SQL文件里面,然后放到cmd下,当着别人的面华丽的执行吧看着黑屏上呼呼闪过的文字,很有一种玩DOS的快感。@rebuild.sql or start rebuild.sql当然,写个过程也未尝不可,就像版主那样。
for rec in (select table_name from user_tables)
loop
execute immediate
'alter index '||rec.index_name||' rebuild';
end loop;
end;
/
for rec in (select index_name from user_indexes)
loop
execute immediate
'alter index '||rec.index_name||' rebuild';
end loop;
end;不好意思哈,刚打错了,这段可以,有些表如果有约束,可能要先disable掉
2、ALTER INDEX USER_INDEXES.INDEX_NAME REBUILD;进行重建。SELECT 'ALTER INDEX '||USER_INDEXES.INDEX_NAME||' REBUILD;' FROM ALL_INDEXES;
得到的结果整列复制到某个SQL文件里面,然后放到cmd下,当着别人的面华丽的执行吧看着黑屏上呼呼闪过的文字,很有一种玩DOS的快感。@rebuild.sql
or
start rebuild.sql当然,写个过程也未尝不可,就像版主那样。