oracle

利用不可状態のINDEXに対しリビルドを実行

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
スポンサーリンク
コピペで使う