随分前ですが、仕事先のDB2の表領域がそろそろ限界だったので、その原因を調査した内容を備忘録として記載します。自宅にDB2の環境がないため、覚えている範囲でのメモとなります。
- 1.データベースの容量(サイズ)の大きい順にテーブル一覧を作成
- 2.テーブルとテーブルスペース(表領域)の一覧を取得
- 3.テーブルの論理名一覧を取得
- 4.1~3の3つの一覧をExcelで1つの表に
- 5.調査
- 5.報告資料の作成、お客様へ報告
1.データベースの容量(サイズ)の大きい順にテーブル一覧を作成
データベースに含まれるテーブルを容量(サイズ)が大きい順番に出力するSQLは以下の通りです。
<容量の大きい順番にスキーマ・テーブル名・容量を出力するSQL>
SELECT TABSCHEMA, TABNAME, SUM(DATA_OBJECT_P_SIZE) +
SUM(INDEX_OBJECT_P_SIZE) + SUM(LONG_OBJECT_P_SIZE) +
SUM(LOB_OBJECT_P_SIZE) + SUM(XML_OBJECT_P_SIZE)
FROM SYSIBMADM.ADMINTABINFO GROUP BY TABSCHEMA, TABNAME ORDER BY 3 DESC;
引用元:https://www.ibm.com/support/pages/db2-データベースに含まれる各表のサイズを一覧する方法
出力する情報(列)は、スキーマ(TABSCHEMA)、テーブル名(TABNAME)、容量になります。容量(サイズ)については、各オブジェクトの物理サイズをSUM(合計)したものをそれぞれ+(加算)して出しています。
テーブルの容量(サイズ)で+(加算)している各カラムの詳細は以下の通りです。※各サイズはキロバイト単位
- DATA_OBJECT_P_SIZE:データオブジェクトの物理サイズ
- INDEX_OBJECT_P_SIZE:索引オブジェクトの物理サイズ
- LONG_OBJECT_P_SIZE:長形式オブジェクトの物理サイズ
- LOB_OBJECT_P_SIZE:LOBオブジェクトの物理サイズ
- XML_OBJECT_P_SIZE:XMLオブジェクトの物理サイズ
P_SIZEはphisycal sizeの意味のようです。SYSIBMADM.ADMINTABINFOは、L_SIZEという論理サイズの情報も持っています。L_SIZEはlogical size。
2.テーブルとテーブルスペース(表領域)の一覧を取得
テーブルのテーブルスペースも取得したいと思い、以下のSQLを実行しました。
select * from syscat.tables;
TABSCHEMA(スキーマ)、TABNAME(テーブル名)、TBSPACE(テーブルスペース)
3.テーブルの論理名一覧を取得
論理名を取得する
SQL追記予定。。。。
4.1~3の3つの一覧をExcelで1つの表に
1~3の3つの表をExcelでVLOOK UPを使って必要な情報を補完し、1つの表としました。せっかくSQLを使えるのでJOINできるのであれば、JOINしたら良かったのですが、時間もなく、とりあえずExcelで出力し、一覧を作成しました。
5.調査
4.で作成した一覧の容量の大きいテーブルから容量の大きいテーブルの調査や、別チームから連携があるデータベースの監視情報からテーブルスペースの使用量や使用率の推移を調査。今後必要となる容量を推測しました。
5.報告資料の作成、お客様へ報告
調査結果の報告資料を作成し、お客様へ報告しました。