您好,欢迎访问一九零五行业门户网

online rebulid index 异常终止遇到ORA-08104

创建好长时间,没有反映;然后取消,结果删除索引的时候,报如下的错误:错误:ora-08104: this index object 67420 is being on
create index idx_p_merchant_detail_id on d_order_detail (merchant_detail_id) online;
创建好长时间,,没有反映;然后取消,结果删除索引的时候,报如下的错误:
错误:ora-08104: this index object 67420 is being online built or rebuilt
通过 online 参数创建索引(或者重建索引), 如果进程被突然终止,或者是手工 ctrl+c 取消该操作,在非常个别的时候,麻烦来了。重新创建索引,会告诉你该索引已经存在,drop index ,会告诉你该索引被锁,或者是 ora-08104(this index object xxxxx is being online built or rebuilt) 错误。
该过程失败之前创建的一些临时对象由 smon 负责清除,糟糕的是, smon 可不是那么听话,马上出来清除,这个清除时间可能会很长,据说在 9i 上观察是 2 个小时才清除掉。
 如何解决呢?
在oracle10g之前,对于这种情况没有太好的办法,只有等smon进程来进行清理了。网上有说上重启库可以解决,有说直接update系统表ind$的,对于不能停机的产品库来说,这些都是不可取的方案。重启不现实,修改系统表更是dba的大忌。
最好是等系统自动清除,如果因此给你带来的影响让你不得不手动尽早清除的话,那就看你的运气了
如果是oracle10g,则可以使用dbms_repair.online_index_clean手工清理(metalink的说法,9i打了bug 3805539的patch的话也能用该过程了)。
如果是一个比较繁忙的 oltp 系统, 并且是要维护单列索引,那么风险真的是很大的。在 smon 清除这些临时对象之前,没有办法在该列上建立新的索引。服务器能撑住么?
异常终止的情况下,可以发现ind$关于该索引的状态还是online rebuild的:
 sql> select obj#,flags from ind$ where obj#=67420;
obj# flags
---------- ----------
67420 514
flags字段的说明可以在ind$的sql.bsq脚本中找到:
/* mutable flags: anything permanent should go into property */
/* unusable (dls) : 0x01 */
/* analyzed : 0x02 */
/* no logging : 0x04 */
/* index is currently being built : 0x08 */
/* index creation was incomplete : 0x10 */
/* key compression enabled : 0x20 */
/* user-specified stats : 0x40 */
/* secondary index on iot : 0x80 */
/* index is being online built : 0x100 */
/* index is being online rebuilt : 0x200 */
/* index is disabled : 0x400 */
/* global stats : 0x800 */
/* fake index(internal) : 0x1000 */
/* index on urowid column(s) : 0x2000 */
/* index with large key : 0x4000 */
/* move partitioned rows in base table : 0x8000 */
/* index usage monitoring enabled : 0x10000 */
514=0×202,表示该索引状态为index is being online rebuilt : 0×200 + analyzed : 0×02
在smon完成清理动作后,再次查询索引状态已经恢复正常:
sql> select obj#,flags from ind$ where obj#=67420;
obj# flags
---------- ----------
67420 2
清理完后,可以在alert.log中看到如下记录:
user:,time:20071209 03:12:09,program:oracle@db1
(smon),ip:,object:sys_journal_67420,ddl: drop table taobao.sys_journal_67420
其它类似信息

推荐信息