発生した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.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment