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
当然,写个过程也未尝不可,就像版主那样。
begin
for rec in (select index_name from user_indexes)
loop
execute immediate
'alter index '||rec.index_name||' rebuild';
end loop;
end;
不好意思哈,刚打错了,这段可以,有些表如果有约束,可能要先disable掉