オーロラさんの勉強帳

IT企業勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。少しでもお役に立てたら幸いです。

DB2 データベースの容量(サイズ)の大きいテーブルの確認

随分前ですが、仕事先のDB2の表領域がそろそろ限界だったので、その原因を調査した内容を備忘録として記載します。自宅にDB2の環境がないため、覚えている範囲でのメモとなります。

 

 

 

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。

 

参照先:https://www.ibm.com/support/knowledgecenter/ja/SS6NHC/com.ibm.swg.im.dashdb.sql.rtn.doc/doc/r0052897.html

 

2.テーブルとテーブルスペース(表領域)の一覧を取得

テーブルのテーブルスペースも取得したいと思い、以下のSQLを実行しました。

 

select * from syscat.tables;

 

 参照先:https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0001063.html

 

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.報告資料の作成、お客様へ報告

調査結果の報告資料を作成し、お客様へ報告しました。