HMW(ハイウォーターマーク)と実際の使用ブロック数の乖離を確認しようとして分かったことは、その確認は結構難しいということ。
HMWの確認はuser|all|dba_tablesのblocks, user|all|dba_segmentsのblocksを確認する。
実際の使用ブロック数は、MyOracleSupportに確認方法があるので、それを利用する。
しかし、後者の方は、ROWID数からざっくり実際に使用しているブロック数を確認するという方法となっていて、行連鎖/行移行などの要素が要因で、正確な値は割り出せない。でも、他に使用ブロック数を正確に把握する方法はない。
実際に社内環境で精度を計測してみると、前者と後者の値で、10%程度の誤差があった。
あと、テーブルのカラムにLOBがあると値がだいぶ変わるので注意。
結局、掲題の確認をするには、HWMとしては前者を、実際の使用ブロック数の確認としては後者を確認する必要がある。
ただし、後者の出力結果はざっくりであり、10%程度の差異は普通に発生することを考慮して、余裕を見ておく必要があるのと、前者の確認でも、カラムのデータ型などの影響を受けて微妙な値が出力されることがあるので、xxx_tablesとxxx_segments両方のblocksを取得して、後者と比較する必要がある。
※ナレッジとして残したかったのですが、対応から時間が経ってしまい、あまり有用なナレッジとして残せず申し訳ありません..