1. rebuild 索引在业务不忙的时候做
2. 中途是不能主断的
3. oracle 会自动清除(时间不同)
4. 通过重新启动数据库 oracle 自动清除
5. 通过修改系统表(oracle 9i)
[@more@] update ind$ set flags=flags-512
where obj#=(select obj# from obj$
where owner#=(select user# from user$
where name='WRJ'
) and
name='IDX_TEST1'
);
select flags from ind$
where obj#=(select obj# from obj$
where owner#=(select user# from user$
where name='WRJ'
) and
name='IDX_TEST1'
);
SQL> connect wrj/wrj
SQL> connect wrj/wrj
多一张临时表:
SQL> select table_name from user_tables;
SYS_JOURNAL_106607
SQL> alter index IDX_TEST1 rebuild online;
Index altered.
xzh2000:
当我们rebuild index online失败后,smon进程会清除sys_journal_xxx(xxx是object_id)以及其它的不一致的东西,在smon清除它们之前,是不能再进行rebuild index online的,如果要清除它们,需要执行dbms_repare包的online_index_clean过程来处理...
在9206,9207,10.2.0.1中smon不会很快地清除index rebuild online失败所带来的对象,在9208,10.2.0.2,11g中这个bug才被fixed.所以在9206,9207,10.2.0.1这些版本中,当我们对大的索引进行index rebuild online时,不要随意地中断rebuild index online操作,否则smon可能需要很久才能清除临时对象。。。
你的理解基本上是对的,他们的区别主要就在于是否阻塞DML操作和扫描数据的不同。
由于REBUILD的时候为了维护索引本身,会阻塞DML操作,
在DML操作频繁的OLTP系统中经常用rebuild online会比较合适
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/66233/viewspace-998247/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/66233/viewspace-998247/