はじめに
処理遅延の対策としてテーブルの断片化が怪しいと目星を付け、テーブル解消化のために「ALTER TABLE MOVE」コマンドを実行したら、その後にエラーが発生したおはなし。
参考:表が断片化したときの対処方法 / 表の再編成方法
https://cosol.jp/knowledge/knowledge_post/d3_maintenance_table/
エラー内容
ORA-01502: 索引'表領域名.インデックス名'またはそのパーティションが使用不可の状態です。
原因と対策
「ALTER TABLE MOVE」コマンドにてテーブルを再構築すると対象テーブルのインデックスが使用不可(UNUSABLE)になってしまうのです(^L^)
インデックス状態確認用SQL
SELECT INDEX_NAME, STATUS FROM USER_INDEXES
WHERE TABLE_NAME = 'テーブル名'
ORDER BY INDEX_NAME
私のケースではインデックスが使用不可の状態で該当テーブルへの登録(INSERT)が走り、PKが使用出来ず冒頭のエラーにつながってしまいました。
対策として該当のインデックスを再構築することで事なきを得ましたわん。
インデックス再構築SQL
ALTER INDEX インデックス名 REBUILD;