Oracleデータ再編成手順

Published by

on

Oracleデータの操作(テーブルデータ参照)においてテーブルのフルスキャンが走る際、High Water Mark(HWM)と呼ばれる「過去にデータが保存されたことのある最も後ろのデータブロックを示すマーク」までデータの読み出しを行います。単純にDELETE文でデータを削除しただけではこのHWMは更新されないため、実際のデータがなくても無駄なスキャンが発生してしまいます。

ここで記載する手順でHWMを実際のデータの配置状態に合わせた形に更新することでその無駄を防ぐことができます。この手順は同一表領域内においてテーブルを移動する形を取るため、一時的に2倍のサイズが使用されることになる点には注意が必要です。

ALTER TABLE 売上データ MOVE TABLESPACE TBLSP_DATA;

上記の例では「売上データ」テーブルが「TBLSP_DATA」表領域にあり、同一表領域内で移動を行うことでHWMを引き下げることを実現します。

(追記)上記手順でメンテナンスを実施したあとに「ORA-01502」の下記エラーが発生することがありますが、このときはインデックスが使用不可となっており、再構築が必要な状態になっているようですのでリビルドを実施しておきます。

ORA-01502: 索引'表領域名.インデックス名'またはそのパーティションが使用不可の状態です。
ALTER INDEX インデックス名 REBUILD;

コメントを残す