DB2 5 min read

Db2でREDUCE MAXが効かない ― 表スペースの空きが戻らないときの逆引き

不要になった表を削除したのに、df の空きが増えない。ALTER TABLESPACE ... REDUCE MAX を打っても、成功メッセージが返るだけで容量が戻らない。Db2の表スペースではよくある詰まり方です。

db2 "alter tablespace TS1 reduce max"
DB20000I  The SQL command completed successfully.

このメッセージは「ハイウォーターマークより上を削った」以上の意味を持ちません。1ページも返っていなくても同じ表示になります。この記事ではまず見る値と、症状からの逆引きを最短でまとめます。実測ログつきの詳細は末尾のZenn記事にあります。

まず見る(結論)

判断材料は3つの値の関係だけです。ハイウォーターマーク(HWM)が割り当ての下限で、REDUCE はここより下を削れません。

# TOTAL - HWM  … REDUCE MAX で今すぐ返る分
# HWM   - USED … HWMの下に閉じ込められた分(表を動かさないと返らない)
db2 "select substr(TBSP_NAME,1,20) as TBSP_NAME, TBSP_TOTAL_PAGES, TBSP_USED_PAGES, TBSP_PAGE_TOP \
 from table(MON_GET_TABLESPACE('',-2)) where TBSP_TYPE = 'DMS'"

TBSP_PAGE_TOP がHWMです。TBSP_USED_PAGES と大きく離れていれば、REDUCE を何回打っても減りません。

症状 → 原因 → 対処(逆引き)

症状 よくある原因 まず打つ手
全行 DELETE したのに1ページも減らない 行を消しても表が確保したエクステントは表スペースに返らない DROP TABLE、または REORG TABLE ... USE
REDUCE MAXDB20000I なのに減らない HWMより下は削れない。末尾に別のオブジェクトが残っている TBSP_PAGE_TOP の前後差で判定する
REORG したら表スペースが増えた USE 句が無く、同じ表スペースにコピーが作られた REORG TABLE ... USE <一時表スペース>
SQL0104N が返る REDUCE (ALL 10 PERCENT) は非自動ストレージDMS向けの構文 REDUCE MAX / REDUCE 10 PERCENT
SQL1763N 理由コード 10 対象がSMS表スペース。REDUCE は用意されていない ファイル削除でOSに返るので操作不要
ADMINTABINFORECLAIMABLE_SPACE0 この列は全行削除しても動かない 表スペース側の TBSP_PAGE_TOP で判断する

効いたかどうかは DB20000I ではなく、TBSP_PAGE_TOP の実行前後の差で判定します。空振りでも成功が返るためです。

いちばん多い真因:REORGを同じ表スペースで走らせている

オフラインREORGは表を作り直すためのコピーを作ります。USE 句を付けないとその置き場は同じ表スペースになるため、空きを取り戻すつもりの操作でHWMが後ろへ伸びます。実測では USE 無しでHWMが上がり、USE TEMPSPACE1 を付けると同じ表・同じデータ量で大きく下がりました。指定する一時表スペースは、対象の表と同じページサイズのものを選びます。

それでも切り分からないとき(実機ログつきの詳解)

220MBの表を使って、DELETEREDUCE MAXREORGDROP TABLE の各段でページ数がどう動くかを実測した結果、コンテナファイルが実際に縮むところまで、Zennのフル記事にまとめています。

▶ Zennで続きを読む(無料)

Db2の表を消してもディスクが減らない ― 表スペースのハイウォーターマークとREDUCE MAX


実機ログつきの詳解を読む →

関連: Db2「SQL0289N 表スペースに新しいページを割り当てられません」の原因を切り分けるDb2 REORGコマンド解説

この記事のような現場のTIPSを、Db2運用の全体像として12章に体系化しました。公式マニュアルには載らない「あのとき知っていれば」を減らすための1冊です。

現場で引ける Db2 の教科書

現場で引ける!Db2実践エンジニア・バイブル

Db2はRDBMS市場でシェア数%。情報が少なく、頼れるのは膨大な公式マニュアルだけ―― そんな現状を変えたくて、「なぜこの値にするのか」「この障害のとき次に何を見るのか」という、マニュアルに載っていない現場の文脈を1冊にまとめました。書いてあることはすべて実際の現場で経験したことです。

アーキテクチャ/構成パラメーター選定/セキュリティ/バックアップ・リカバリ/HADR/pureScale/日常点検の自動化/メモリ・ロック競合/SQLチューニング/RUNSTATS・REORG/MON_GET監視/現場の難題集 ―― 全12章+運用シェルスクリプト集

Zennで読む(¥2,000)→