テーブル上の不要なデータをdeleteで消したが、使用率が下がらない。空き容量が確保できない。

この問題はoracleでよく起きる問題である。

更新を頻繁に行うテーブルがこの問題によく遭遇する。

原因は、ハイウォーターマーク

データの断片化が起きていることと、「使用済」の最終ブロックの位置が変わらない。
対応策

・trancateを行う。
・テーブルの移動による再作成 (alter table move)
・SHRINK SPACE による断片化の解消
・export/import

いずれかを行えばOK。

参考ページhttp://www.shift-the-oracle.com/element/high-water-mark/rewrite-high-water-mark.html

※こういったメンテナンス作業はインデックスと同じで断片化が起きる。状況によってタイミングは変わるが、一定周期によりメンテナンスが必要となる。

おすすめの記事