あまり大きな声では言えませんが、あるシステムのあるファイルシステムがいっぱいになって、
システムアラートが起きました。
原因を調査してみると、DB2で統計情報アクセスプランを度々取っていたようなのですが、
統計情報アクセスプラン用のデータファイルが狭いファイルシステムに作成されちゃっていて、
そいつが結構いっぱいいっぱいになっていた状態で別のファイル作成が行われようとしたので、
監視の仕組みが「アカンで!!」と教えてくれたらしいです。
今回使っていた統計情報アクセスプランの取り方は、DB2で統計情報アクセスプラン用に用意されている「EXPLAIN_」で始まる9つのテーブル(V9の場合)にdb2exfmtコマンドで一旦データを書き、それをdb2explnコマンドで表示をするというものだったのですが、情報を取得した後に、キチンとお掃除しておけば良かったのですが、前任者が忘れていたみたいです。
で、お掃除せねば!!となったのですが、DB2の統計情報アクセスプランってどうやって掃除???
と思ったのでちょっと調べてみました。
上述の「EXPLAIN_」で始まる各テーブルはお互いに参照関係にあるのですが、
ON CASCADE DELETEが付いているので親玉の「EXPLAIN_INSTANCE」を
DELETEすると残りの8テーブルのデータも全て消える、とのことでした。
ローカル(Windows)で試してみると、確かにその通り!!
検証できたので近いうちにサーバーのデータもDELETEです。
ちなみにOracleだとEXPLAIN PLANを使う為に作成した
「PLAN_TABLE表」をTRUNCATEするか、
statement_idを条件にしてDELETEする、
のが常套手段のようです。
※って1回も消したこと無いや。。。
参考URL
:DB2:アクセスプランを確認するには
:DB2:動的SQLアクセスプラン実行時の詳細情報を表示するには(CUI)
:@IT:DB2チューニング・ベストプラクティス(6) Page 3/4
※ちょっと古い記事ですが。
こんにちは。
細かい突っ込みで恐縮ですが、EXPLAINで取得した情報は統計情報ではなくアクセスプラン(実行計画)ですね。
DB2用語でいうところの統計情報はRUNSTATSで取得する表やインデックスのメタ情報のことを指します。
SIMさん、コメントありがとうございます。
ご指摘通り、統計情報ではなくアクセスプランですね。
ごっちゃにしていました。
実はSIMさんのブログは拝見させてもらっています。
まさかこんなところでコメントを頂けるとは、、、
恐縮です。