UNUSABLE状態のインデックスは利用できません
断片化対策等でテーブルのMOVEを行った場合、PKを含めインデックスは「UNUSABLE」となりそのままでは利用できません。利用できるようにするにはインデックスのリビルドが必要になります。以下SQLは『リビルドを行うDDLを出力』しますので、出てきたSQLをそのままコピペで使ってください。(以下は「online」オプションを付けていますがこちらは適宜書き換えてください。)
インデックスのリビルドを実行するDDLを出力するSQL
select t.OWNER,t.INDEX_NAME,t.TABLE_OWNER,t.TABLE_NAME , 'alter index '||t.OWNER||'.'||t.INDEX_NAME||' rebuild online;' rebuild_ddl from dba_indexes t where t.STATUS ='UNUSABLE' ;
SQL実効例
OWNER INDEX_NAME TABLE_OWNE TABLE_NAME REBUILD_DDL
-------- ---------------- ---------- ---------- --------------------------------------------------
SOONI UNI_IDX01_TBL26 SOONI TBL26 alter index SOONI.UNI_IDX01_TBL26 rebuild online;
SOONI IDX02_TBL26 SOONI TBL26 alter index SOONI.IDX02_TBL26 rebuild online;
SOONI RPEX01_PK SOONI RPEX01 alter index SOONI.RPEX01_PK rebuild online;
SQL> alter index SOONI.UNI_IDX01_TBL26 rebuild online;
索引が変更されました。
SQL> alter index SOONI.IDX02_TBL26 rebuild online;
索引が変更されました。
SQL> alter index SOONI.RPEX01_PK rebuild online;
索引が変更されました。
SQL>
SQL*Plus用
SET LIN 200 COLUMN OWNER FORMAT A8 COLUMN INDEX_NAME FORMAT A16 COLUMN TABLE_OWNER FORMAT A10 COLUMN TABLE_NAME FORMAT A10 COLUMN REBUILD_DDL FORMAT A50