知らなかった。。。
http://www.oracle.co.jp/iSeminars/080802_1100/id_001653.pdf
33ページあたりから
Bツリーインデックスのリーフ分離を以下で算出
ー> 事前に統計情報が最新であることが望ましい
SELECT LF_ROWS AS "リーフ行の数",
LF_BLKS AS リーフブロック数,
DEL_LF_ROWS AS "削除リーフ行の数",
TO_CHAR(DEL_LF_ROWS/LF_ROWS * 100,'999.9') || '%' AS "削除リーフ行の割合"
FROM INDEX_STATS;
削除リーフの割合を確認して、適時実行の判断材料とする。(2割以上で対応)
オラクル推奨は、 週1、月1の自動化
----
Oracleのインデックスは、アナライズでは、分析情報をCOBに与えるだけの
統計情報管理しかできない。そのため、劣化が激しい場合は、再構築をする
必要がある。
もっとも簡単な方法は DROP CREATE ではあるが、それ以外に、リビルドで再構築
することが可能
1. ALTER INDEX (index_name) REBUILD ;
注意点
REBUILD中は領域を利用するので、スペースは十分確保する必要がある。
COBに再度統計情報を最新結果にして格納
2. ANALYZE INDEX (index_name) VALIDATE STRACTURE ;
なお、REBUILD ONLINE オプションは、EE版のみ。こういうところがオラクルの
商売かも。
断片化率が高く、時間をかけられない場合は、効率性のみを重視しコアレスを実施する
のもあり
ALTER INDEX (index_name) COALESCE;
でもう少し軽い断片化解消もできる。