JavaScriptが無効になっています。
この状態では一部の情報が表示されず、すべての機能を利用することができません。
テーブルのハイウォータマーク操作
テーブルのハイウォータマークによるパフォーマンスと領域の無駄遣いの問題の解決するためには、2つの手段がある。
表の移動による再構築と、フラグメント解消後の縮退操作である。
テーブルの移動による再作成
今のテーブルを新しいセグメントに複製し、既存のセグメントを破棄する。
このとき、再作成先のテーブルスペースに再構築するだけの空き領域、更新操作を制限するテーブルの排他ロックが必要とされる。
ALTER TABLE rebuild_table MOVE [ ONLINE ] ;
(注意) LONG / LONG RAW のある表は移動できない
索引構成表のみ ONLINE 実行ができる。(パラレルクエリーは不可)
SHRINK SPACE による断片化の解消
行断片 の再配置(コピーと削除)による 断片化 の解消
行移行したデータが移動の対象となれば行移行は解消されるが、行移行がすべて解消されるわけではない。
行ロックのため ONLINE 実行が可能
ハイウォータマークを下げることはできるが万能ではない。(※) (Oracle 10g 時点)
(※) レコード数が少ない場合において HWM が思ったより低下しない場合がある。
これは 行移行 、行連鎖 の状態によって使用中のブロックが残っていることが考えられる。
連鎖状態を解消してから行なうと非常に効果が高い。
[ ALTER TABLE fragment_table ENABLE ROW MOVEMENT ; ]
ALTER TABLE fragment_table SHRINK SPACE [ COMPACT ] [ CASCADE ] ;
[ ALTER TABLE fragment_table DISABLE ROW MOVEMENT ;]
(注意) ローカル管理表領域 、自動セグメント領域管理 の場合のみ実行ができる。
COMPACT は デフラグ(レコードの再配置)のみでハイウォータマークの上位領域のエクステントの解放は行わない。
処理を 2回に分けたい場合などにも使う (領域解放は SHRINK SPACE)
CASCADE は依存するブジェクトも SHRINKする。
レコードの再配置とエクステント解放の動作イメージ)
Your browser does not support the video element.
インデックスの再構築、断片化の解消
インデックスの再構築 (ONLINE での実行が可能 ※)
ALTER INDEX rebuild_index REBUILD [COMPUTE STATISTICS];
空き領域の結合
ALTER INDEX fragment_index SHRINK SPACE COMPACT ;
または
ALTER INDEX fragment_index COALESCE;
(※) ONLINE を指定したインデックスの再構築時には基本的に DMLをブロッキングするロックは発生しない。但し、最終フェーズで短時間ブロックされる。
Oracle 11g において ONLINE 実行の最終フェーズで発生していた DMLブロッキング・ロック が不要になっている。
関連事項