読者です 読者をやめる 読者になる 読者になる

音楽図鑑 - 近況報告

はてなダイアリーから移行しました。

SAP R/3 Basis Tipsの巻

SAP R/3のBasis系をいろいろチューニング中です…というとカッコいいですが、空きが少なくなってきた表領域があるのでいろいろやっているんですね。その表領域というのが、インデックス用の領域でして。いままでは空きがなくなる→コンテナ拡張して空きを確保、というバカチョンな対応をしていたのですが、開発機のディスク領域足りない事件でドタバタしているときに、次のような法則を発見しますた。

  • 表領域をReorgするだけで、空きスペースを確保できることがある。DBのレコードを削除した場合、使用されていた領域はReorgしないと開放されないからです。SE16で削除した場合も、Deleteコマンドで削除した場合も、クライアント削除でデータ削除したときも同様です。
  • アドオンプログラムなどで一時的にデータを保管するテーブルを多数置いている表領域は虫食い状態になっていることが考えられるので、定期的にReorgした方がいいとされてます。これはまあ、当然の話。
  • 表をReorgすると、その表に紐付いたインデックスも最適化され(自動的にインデックスを再創成するっぽい)、結果としてインデックス自体が小さくなって空きスペースが確保できる。
  • というわけで今回も、インデックス用領域を拡張する前にデータ表領域をReorgしたら、インデックスのサイズが20%も縮小しました。これなら当分は拡張する必要がありません。

ちゃんとBasis勉強している人にとっては常識かもしれないのでTipsと言えるか激しく微妙ですが、とりあえず。もっとも、わざわざ表領域をReorgしないでインデックスだけ張りなおせばいいんじゃないかと思うんですが、DBAコクピットからインデックスを再創成するやりかたがわかんないので、さくっとReorgしちゃいました。てへっ。
以下余談です。弊社ではR/3のDBにIBM DB2なんてマイナーなものを使っています。DB2はインデックス再創成などの機能がとても充実しているので、いろいろ助かります*1。しかしご存知のようにR/3ではDBを直接操作できないので、痒いところに手が届かないもどかしさがあります。ってなわけで、R/3 DBAでのインデックス再創成について調べようっと。

*1:ただしアドミンツールはウンコもいいところ。OracleのDBAツールなんかとは比べ物にならないほどタコい。