2007/07/24

ORA-08104

発生したORA-08104エラーについて
エラー原因と対応方法を報告します。


背景:

テーブルのANALYZE失敗:

SQL> analyze table tmuser.m01_cust compute statistics;

analyze table tmuser.m01_cust compute statistics

*

ERROR at line 1:

ORA-08104: this index object 6571 is being online built or rebuilt



そして上記エラー対象の索引削除も失敗:

SQL> drop index IDX_M01_ADDR_CODE;

drop index IDX_M01_ADDR_CODE

*

ERROR at line 1:

ORA-08104: this index object 6571 is being online built or rebuilt



対応方法:

① 「REBUILD FLAG」が残っている索引を確認する。

SQL> select obj# from ind$ where bitand(flags, 512)=512;

OBJ#

----------

6571

② 対象索引の「REBUILD FLAG」を更新する。

SQL> update ind$ set flags=flags-512 where obj#=6571;



1 row updated.



SQL> commit;

Commit complete.



③ 更新後の「REBUILD FLAG」状態を確認する、「0」であれば、正常に戻ることを判断できる。

SQL> select bitand(flags, 512) from ind$ where obj#=6571;



BITAND(FLAGS,512)

-----------------

0

④ 索引削除できました。

SQL> conn tmuser/tmadmin

Connected.

SQL> drop index IDX_M01_ADDR_CODE;

Index dropped.



⑤ 索引再作成してANALYZEもできました。

SQL> CREATE INDEX TMUSER.IDX_M01_ADDR_CODE

ON TMUSER.M01_CUST

(ADDR_CODE_PREF, ADDR_CODE_CITY, ADDR_CODE_ZONE)

TABLESPACE USERS_INDEX_M01

STORAGE(INITIAL 128M MINEXTENTS 1) NOLOGGING;

Index created.



SQL> analyze table tmuser.m01_cust compute statistics;

Table analyzed.

No comments: