你好,游客 登錄 注冊 搜索
背景:
閱讀新聞

online rebulid index 異常終止遇到ORA-08104

[日期:2013-01-15] 來源:Linux社區  作者:wyzxg [字體: ]

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:[email protected]
(SMON),IP:,object:SYS_JOURNAL_67420,DDL: drop table "TAOBAO"."SYS_JOURNAL_67420"

linux
相關資訊       ORA-08104 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
北京快乐8走势图彩客网