oracle

Oracle インデックスの再構築(断片化解消)

対象テーブルのインデックス一覧取得
select i.TABLE_OWNER,i.TABLE_NAME,i.OWNER,i.INDEX_NAME,i.LAST_ANALYZED,i.TABLESPACE_NAME
 from dba_indexes i where i.TABLE_OWNER='SCOTT' and i.TABLE_NAME='EMP'
;
各インデックス毎にアナライズ
analyze index SCOTT.PK_EMP  validate structure
;
アナライズ結果を出力。これはひとつずつしかできません。
SELECT
    name 
  , height  -- 深さ
  , lf_rows -- リーフ行
  , del_lf_rows   -- 削除リーフ行数
  , del_lf_rows / lf_rows as "断片率"
FROM  index_stats i
WHERE  name = 'PK_EMP'
;

-- インデックスのリビルド
-- onlineオプションはライセンス必要
alter index scott.PK_EMP rebuild online
;
-- SHRINK もありますが rebuildのほうお勧め
ALTER INDEX SCOTT.PK_EMP SHRINK SPACE 
;
スポンサーリンク
コピペで使う