CLUB DB2 #122



CLUB DB2 第122回

DB2管理本の著者が教える
簡単運用管理入門


2011/04/22
日本アイ・ビー・エム
下佐粉 昭 (しもさこ あきら)                                                            rev. 1.2

                この資料は下記URLでダウンロード可能です
                http://ibm.com/developerworks/wikis/display/clubdb2/materials
                                                                    © 2011 IBM Corporation
自己紹介
下佐粉 昭 ( しもさこ あきら )
    和歌山県生まれ
    2001年 IBMに中途入社
    以来、DB2関連の仕事多し
    現在はビジネスパートナー様向け技術支援
■書籍
    「即戦力のDB2管理術」
    「XML-DB開発 実技コース」(共著)
    「DB2 逆引きリファレンス」(共著)


■オンライン
    Twitter - @simosako             内容は全てWEBで公開しています!
    – http://twitter.com/simosako
                                       http://db2watch.com/
    Unofficial DB2 Blog
    – http://db2.jugem.cc/

                                                          © 2011 IBM Corporation
2
今日の目的
    データベースの設計・運用管理はシステムによって色々事情が異なります


    でも小・中規模環境であれば「割り切った」運用管理で省力化が可能です
     –専任の担当者が置けない小規模システムでは「割り切り」が重要


    小・中規模向けのデータベース作成~運用のコツを把握しましょう


    【宣伝】基礎から詳しく学習したい方は、ぜひ自著をご参照ください!
            即戦力のDB2管理術~仕組みからわかる効率的管理のノウハウ
            2011年4月8日発売 (技術評論社)
            下佐粉昭 著
            A5判/432ページ
            ISBN 978-4-7741-4597-6
            http://db2.jugem.cc/?eid=2341 (書籍紹介)
                                                   © 2011 IBM Corporation
3
目次

    ①本番用途のデータベースを簡単に作る
    –文字コードに注意
    –最低限必要な設定
    –自動ストレージ


    ②簡単運用パターン
     –バックアップ(BACKUP)
     –データの再編成(REORG)
     –統計情報の更新(RUNSTATS)


    ③簡単に監視する
     –MMC
     –モニター表関数・ビュー


                          © 2011 IBM Corporation
4
①本番用途のデータベースを簡単に作る




               © 2011 IBM Corporation
データベースを作る
    CREATE DATABASEで簡単に作れるが、文字コードだけは注意!
    文字コード
     –データベースをディスクに記録する際の文字コードを指定
       • 文字コードによってディスク使用量が異なる
     –クライアントと文字コードが異なる場合、DB2によって自動的に変換
                     SJIS→Unicode変換   DB2サーバ
         SJISアプリ
                   DB2ク
                   ライア
                   ント
                                         Unicode
                   Unicode→SJIS変換
                                        データベース


簡単な文字コードの選択方法
  –クライアントに合わせる
     •例)Visual Basicクライアントの場合→ IBM-943(SJIS)を選択
  –クライアントが複数の文字コードの場合→ UTF-8(Unicode)を選択
  –よく分からない場合→ UTF-8(Unicode)を選択
                                                   © 2011 IBM Corporation
6
DB2の内部構造
                   DB2クライアント

                      SQL
    インスタンス

      データベース
                               更新処理情報
             エージェント                       ロガー

     バッファープール                             ログバッファー

         I/Oサーバー
                               I/Oクリーナー

                                          ログパス
      表は表ス         表スペース
      ペース上に     コンテナー コンテナー
      作成される


                                                 © 2011 IBM Corporation
7
本番環境に最低限必要な設定
    ログ領域
     – (できるだけ)表スペースとは別ディスクにする
        • 更新処理が重要な場合は高速なディスクを用意する
        • DB CFGのNEWLOGPATHで後から変更可能
    – サイズを増やす
       • DB CFGのLOGPRIMARY(数)を増やす
       • DB CFGのLOGFILSZ(サイズ)を増やす

    – アーカイブロギングモードに変更する
       • DB CFGのLOGARCHMETH1でディレクトリを指定する
     循環ロギング                           アーカイブロギング
              1         2次ログ            1    2         3     4         5
                        (LOGSECOND)
                                                 データベース・ログ・パス
      n             2      1    2                (LOGPATH)


                                            アーカイブ・ログ・パス          LOGARCHMETH1で
              3                                                  指定したディレクトリ
     1次ログ                                   (LOGARCHMETH1)
                                                                 へコピー。
     (LOGPRIMARY)
            データベース・ログ・パス                                         リストア時に利用可
                                                                 能にする。
            (LOGPATH)
                                                                     © 2011 IBM Corporation
8
表スペース
表スペースの管理
                              コンテナー   コンテナー   コンテナー
    DB2は柔軟に表スペースを作成可能
     –表スペース:表を置くための領域。1つ~複数のコンテナで構成
     –コンテナ:表を置くディスク領域そのもの
     –DMSとSMS:2つのタイプから選択可能
       • Large DMS : 高速。一般表用途
       • SMS : 表の作成、削除が速く、一時表用途
     –キャッシュするバッファープールを表スペース毎に設定可能
                            Large
CREATE LARGE TABLESPACE MYTS1               結構面倒...
                            DMSで作成
  MANAGED BY DATABASE USING
    (FILE 'D:¥db2data¥container1' 200M, 2つのコンテナをファイル
     FILE 'E:¥db2data¥container2' 200M) で定義
  AUTORESIZE YES
  INCREASESIZE 100M       自動拡張を設定。サイズが不足した場合は
  MAXSIZE 10G             100MBずつ増加し、最大10GBまで拡張する
  BUFFERPOOL MYBP1          バッファープールを指定
                                                © 2011 IBM Corporation
9
表スペース管理を簡単にする
 自動ストレージ機能を使って表スペース管理を簡単にする
  – CREATE DATABASEで「ストレージパス」を指定するだけ

 > db2 "CREATE DB MYDB ON 'D:¥db2data','E:¥db2data¥' DBPATH ON 'C:'

     – 表スペース作成が劇的に簡単に!
        • DB2が自動的にストレージパス上にコンテナを作成し、適切な表スペースタイプ
          を選択してくれる

 > db2 "CREATE TABLESPACE MYTS2" (Large DMSで作成される)
 > db2 "CREATE USER TEMPORARY TABLESPACE USERTEMP1" (SMSで作成される)

     – ストレージパスに複数のデバイスを設定すると自動的にストライピング

     – ストレージパスがRAIDデバイスの場合、以下を設定するだけで並列アクセスに
        • db2set DB2_PARALLEL_IO=*


                                                                © 2011 IBM Corporation
10
(参考)自動ストレージの指定方法:サンプル

• ユーザ表スペースの初期サイズを300MB、100MB単位で増加、最大10GBを指定
> db2 "CREATE DATABASE MYDB ON 'D:¥db2data','E:¥db2data¥' DBPATH ON 'C:'
  USER TABLESPACE MANAGED BY AUTOMATIC STORAGE
  INITIALSIZE 300 M INCREASESIZE 100 M MAXSIZE 10 G"    ※サイズの指定は数字と単位
                                                        の間に空白が必用です(300M
                                                        ではなく、300 M)

 初期サイズと増加サイズ、最大サイズを指定して表スペースを追加
> db2 "CREATE TABLESPACE MYTS2 INITIALSIZE 100 M INCREASESIZE 10 M MAXSIZE 1 G"

                                                        ※サイズを指定しなかった場合、
                                                        初期サイズ30MB,自動増加
                                                        100MB、最大10GBで作成




                                                                           © 2011 IBM Corporation
11
ここまでのまとめ
 自動ストレージを有効にしてUTF-8(もしくはIBM-943)でデータベースを作る
 db2set DB2_PARALLEL_IO=*   (※ストレージパスがRAIDデバイスの場合のみ)

 db2 "CREATE DATABASE MYDB ON D:¥db2data1,E:¥db2data2 DBPATH ON C:
      USING CODESET UTF-8 TERRITORY JP"

 ログのディレクトリとサイズ調整

 db2 "UPDATE DB CFG FOR MYDB USING LOGPRIMARY 10"
 db2 "UPDATE DB CFG FOR MYDB USING LOGFILSZ 10000"
 db2 "UPDATE DB CFG FOR MYDB USING NEWLOGPATH F:¥db2log"
 アーカイブログモードに変更して一度フルバックアップ
 db2 "UPDATE DB CFG FOR MYDB USING LOGARCMETH1 DISK:G:¥db2arclog"
 db2 "BACKUP DB mydb TO G:¥db2backup"



                                                                © 2011 IBM Corporation
12
②簡単運用パターン




            © 2011 IBM Corporation
最低限必要な運用管理

 バックアップ
  –BACKUPコマンド
  –最も大切。必須の作業


 表の再編成
  –REORGコマンド
                         日常的に必要となる管理作業
  –更新が多い表には必要
                         =最低限必要な作業

 統計情報の更新
  –RUNSTATSコマンド
  –アクセスプラン(実行計画)を良いものに
   維持するために必要



                                 © 2011 IBM Corporation
14
DB2のバックアップ
表領域、ログの両方をバックアップする事が重要
                          オンライン・オフライン
                          どちらでも実行可能
表領域- CREATE TABLESPACE
                                        Backupコマンドで指定した領域
                            Backup
     コンテナ   コンテナ   コンテナ     コマンド            Backupファイル

     表データそのものが入っている
                            INCLUDE LOGSでバックアップファイル
                            内に最低限必要なLOGを含める

ログ領域- LOGPATHで指定
                                        LOGARCHMETH1で指定した領域
                            logmgr
        アクティブLOG            プロセス            アーカイブLOGファ
                                             アーカイブLOGファ
                                               アーカイブLOGファ
                                                イル
          ファイル                                   イル
                                                   イル


 トランザクションを記録したログ               logmgrはアクティブLOGが一定のサイズに達すると
                               DB2より自動的に起動され、LOGARCHMETH1で指
                               定された先にLOGをコピーする


                                                        © 2011 IBM Corporation
15
BACKUP
 DB2のバックアップは、BACKUP DATABASEコマンドで行うのが基本
 BACKUP DATABASE MYDB TO dir [ONLINE]
     [INCREMENTAL [DELTA]] [COMPRESS] [INCLUDE LOGS]

 – 機能
   • 差分バックアップ可能 (INCREMENTAL [DELTA]キーワード)
   • オンラインバックアップ可能(ONLINEキーワード)
   • イメージの圧縮可能(COMPRESSキーワード)
   • 必要なログファイルをバックアップイメージに含める(INCLUDE LOGSキーワード)

 – データだけでなく、構成パラメタやコンテナ(表領域のディスク)の物理位置等もバック
   アップされる

 – 差分やオンライン・オフラインを自由に組み合わせる事が可能
   • ファイル名は自動的に付けられるので、定期的に実行するのも簡単

              ※差分バックアップを利用するにはDB CFGのTRACKMODをYESに設定する必要がある
              >db2 "UPDATE DB CFG FOR MYDB USING TRACKMOD YES"
                                                                 © 2011 IBM Corporation
16
BACKUPを簡単にする
 BACKUPの面倒なところ①
  Q:差分とか、オンラインとかオフラインとかどのオプションを使えば良いの?
  A:小・中規模DB向けに割り切れば...
     • 小さいデータベースは毎回全体バックアップでOK
     • 停止時間中にオフライン もしくは ONLINE+INCLUDE LOGS

     > db2 "BACKUP DB MYDB TO /db2backup"
     > db2 "BACKUP DB MYDB TO /db2backup ONLINE INCLUDE LOGS"


 BACKUPの面倒なところ② – いつ消すのか?
  – 古いバックアップ・イメージ(バックアップ・ディレクトリ)
  – 古いアーカイブ・ログ(アーカイブ・ログ・パス)
     • 間違ったファイルを消すと一大事に...

     そこでリカバリー履歴ファイルを活用して簡単に運用

                                                                © 2011 IBM Corporation
17
リカバリー履歴ファイルとAUTO_DEL_REC_OBJ
 リカバリー履歴ファイル
  – BACKUPやLOADコマンドの履歴を記録している
  – LIST HISTORYコマンドやSYSIBMADM.DB_HISTORY表で閲覧可能
      >db2 "LIST HISTORY BACKUP ALL FOR MYDB"
  – PRUNE HISTORYコマンドで古い履歴を削除可能


 AUTO_DEL_REC_OBJ
  – ONにすると、PRUNE HISTORY時に関連するオブジェクトが削除可能に
    > db2 "UPDATE DB CFG FOR MYDB USING AUTO_DEL_REC_OBJ ON"


 以下のように簡単運用が可能
  – 自動実行シェルなどで、毎日定期的にBACKUPコマンドを実行
  – 一ヶ月に一回などのタイミングでPRUNE HISTORY ... AND DELETEを実行して
    履歴とともに古いデータを消す
     例)
     > db2 "PRUNE HISTORY 20110219223044 AND DELETE"

                                                               © 2011 IBM Corporation
18
REORG
      更新処理によってデータはじょじょに”ばらばら”になる
     – DB2ではREORG コマンドでデータを並べなおす
 REORG TABLE テーブル名 [INPLACE] [ALLOW {READ|WRITE|NO} ACCESS]
 REORG INDEXES ALL FOR TABLE テーブル名 [ALLOW {READ|WRITE|NO} ACCESS]

     REORGCHKコマンドでREORGの必要性を確認
      > REORGCHK CURRENT STATISTICS [ON TABLE テーブル名]
      REORGのオプション:シャドーコピーかインプレースか?
     – REORG中に表に書き込みたいなら、INPLACEで(ログあふれに注意)

              メリット                     デメリット
 シャドーコピー       高速                       テンポラリ領域が必要
               インデックスのREORGが可能          REORG中は書き込み不可
 インプレース        テンポラリ領域が不要               インデックスを別にREROGする必要
               REORG中の更新アクセス可能          同一表領域に10-20%の空きが必要
               一時停止、再開が可能               ログが増える
                                                            © 2011 IBM Corporation
19
REORGを簡単にする:REORGの回数を減らす①
   ①PCTFREE=0のケース(デフォルト):ページサイズギリギリまで行を
   詰めこむように配置。行が長くなるとオーバーフローしやすい                              ページ

                               行1           行2               行3

                               行4        行1(更新後)※オーバーフロー行

   ②PCTFREE=20のケース:ページサイズに20%の余白を残して配置さ
   れる。この例では行3が入らなくなり、次のページに格納されている
                                                            20%の余白
ALTER TABLE tab1 PCTFREE 20;
REORG TABLE tab1;
                               行1           行2

                               行3   行4

   ③PCTFREE=20のケースで行1が長いデータで更新された状態。余
   白があるため、行1がオーバーフローせずに済んでいる
                               行1(更新後)           行2

                               行3   行4                      © 2011 IBM Corporation
 20
REORGを簡単にする:REORGの回数を減らす②
 クラスターインデックスを作成することで、データの並び崩れにくくなる
           通常のインデックス                           クラスターインデックス
     CREATE INDEX idx1 ON tab(c)       CREATE INDEX idx2 ON tab(c) CLUSTER




     D        E         F          C              C D E F



         インデックスの順序とデータの                    インデックスの順序とデータの
         配置順が無関係なので散ら                      配置順が一致するように配置さ
         ばって配置されている                        れている

                                                                 © 2011 IBM Corporation
21
統計情報の更新:なぜ統計情報の更新が必要なのか
     より良い「アクセスプラン(実行計画)」作成のため
     データが変更されたら統計情報を更新する必要がある


          DB2クライアント

              SQL
                      ①SQLの書き換え
     エージェント
                      ②複数のアクセス
                      プラン候補を作成

                                  統計情報
                      ③コストの見積もり


                      ④アクセスプランの
                      決定           © 2011 IBM Corporation
22
RUNSTATS
                                                                  多くの場合、この
 RUNSTATSコマンドにて統計情報を更新する                                          基本形でOK

       RUNSTATS ON TABLE スキーマ名.表名 [ON ALL COLUMNS]


                                             データに「偏り」がある場合、
 もう少し進んだ使い方                                  分散統計を試してください
 – 例①分散統計付で収集する
     • RUNSTATS ON TABLE ... WITH DISTRIBUTION AND INDEXES ALL
 – 例②すべての列について統計を収集し、c1列についてLIKE統計を収集する
     • RUNSTATS ON TABLE ... ON ALL COLUMNS AND COLUMNS (c1 LIKE
       STATISTICS)

 – 例③約10%のデータをサンプルとして使用して統計を収集する
   • RUNSTATS ON TABLE ... ON ALL COLUMNS TABLESAMPLE SYSTEM(10)
   • RUNSTATS ON TABLE ... ON ALL COLUMNS TABLESAMPLE BERNOULLI(10)
         ■参考文献
         「DB2 UDBバージョン8.2のRUNSTATS」(サンプル多数で分かりやすい)
         http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/002B4A0C         © 2011 IBM Corporation
23
RUNSTATSを簡単にする:統計プロファイル
     表の特性に合わせて毎回RUNSTATSのオプションを変えるのが大変
     – SET PROFILEでRUNSTATSのオプションが記憶される
       • SYSCAT.TABLESのSTATISTICS_PROFILE列で確認可能
>db2 "RUNSTATS ON TABLE SIM.EMPLOYEE WITH DISTRIBUTION AND INDEXES ALL SET PROFILE"
>db2 "SELECT VARCHAR(TABNAME,10),VARCHAR(STATISTICS_PROFILE,100) FROM SYSCAT.TABLES WHERE TABNAME = 'EMPLOYEE'
AND TABSCHEMA='SIM'"
1          2
---------- ----------------------------------------------------------------------------------------------------
EMPLOYEE   RUNSTATS ON TABLE "SIM"."EMPLOYEE" ON ALL COLUMNS WITH DISTRIBUTION ON ALL COLUMNS AND INDEXES ALL




     USE PROFILEを付けて実行すると、セットしたオプションで実行される
     > db2 "RUNSTATS ON TABLE SIM.EMPLOYEE USE PROFILE"
     NONE PROFILEを付けて実行すると、プロファイルを削除
     > db2 "RUNSTATS ON TABLE SIM.EMPLOYEE UNSET PROFILE"



                                                                                                  © 2011 IBM Corporation
24
RUNSTATSを簡単にする:自動化
 RUNSTATSを自動的に行う
  – 自動RUNSTATS
     • 2時間おきの非同期RUNSTATSがスケジュールされる
                                                                   v9.7からデフォ
  – 自動ステートメント統計(リアルタイム統計収集)
                                                                   ルトでON
     • SQLを実行しようとした瞬間に、必要なら統計情報を更新

     自動保守                                 (AUTO_MAINT) = ON
      データベース自動バックアップ                      (AUTO_DB_BACKUP) = OFF     自動化全体の
      表自動保守                               (AUTO_TBL_MAINT) = ON      親パラメータ
       自動 RUNSTATS                        (AUTO_RUNSTATS) = ON
        自動ステートメント統計                       (AUTO_STMT_STATS) = ON     (DB CFG)
       自動再編成                              (AUTO_REORG) = OFF


 簡単運用の方法
  – 小・中規模のシステムでは自動RUNSTATSがONで問題ない
     • データを入れた最初だけは手動で実行し、あとは自動に任せる
     • 基本形以外のRUNSTATSが必要な表には統計プロファイルを作成しておく
     • (オプション)バックアップのタイミングでdb2look -m で統計情報も保存する
       > db2look -m -d MYDB -z SIM -o stat.sql
                                                                       © 2011 IBM Corporation
25
③簡単に監視する




           © 2011 IBM Corporation
監視はなぜ必要?


 定常監視が重要。
 継続的に記録し続けることで、
 システムに起こっている変化が
 定量的に把握出来るようになります。




                時間



                     © 2011 IBM Corporation
27
監視ポイント
     小・中規模のシステムでは、DB2の内部情報を詳細に把握するより外部を含めた全体
     のトラブルを把握することがより大切
     – とはいえ、DB2内部もある程度は取っておきたい..
                           DB2サーバー

              DB2関連プロセ            •バッファープールヒット率
              スの死活監視              •デッドロック数        DB2内部の動
 ping等による                  DB2
                          DB2     •ソート時間
                          DB2                     作を監視
 ネットワーク導                          •トランザクション数
 通確認                                    :
             NIC




                   CPU               CPUやメモリ
                                     使用率の監視
                   メモリ


     ストレージ全体の使
     用率の監視                                        DB2やOSロ
                                     OSのログ
                         DB2の表ス                   グファイルの
       DB2表スペースの         ペース                      監視
                                     DB2の診断情報
       使用率の監視
                                                  © 2011 IBM Corporation
28
Windows環境ではMMCが便利
     – OSの情報とDB2内部情報を一括して取得できる
     – 低負荷・リモートから取得可能
     – グラフを右クリック⇒カウンタの追加
       • DB2 Databases(DBレベルの情報)                   DBが活性化
       ロックウェイト、ソートオーバーフロー 等多数                  (Activate)されていな
      • DB2 Applications (アプリケーションレベルの情報)       いと表示されません
      • DB2 Database Manager(インスタンスレベルの情報)


                                                インスタンスが開始
                                               (db2start)していない
                                                 と表示されません




                                             ローカル、もしくはリモート
                                             のコンピュータからカウン
                                             タデータを収集できます




                                                     © 2011 IBM Corporation
29
DB2のモニタリング機能

                                      MONREPORTモジュール
     モニター表関数・ビュー
                                      (テキスト出力)
     (メトリック)

                                         モニタービュー
                                         (MON_*から始まる
                  モニター表関数
                                         ビュー。モニター表関
                  (MON_*で始ま
                                         数を組み合わせて作
                  る表関数)
                                         られている)

モニターエレ
メント(監視項
目)
                   スナップショット表              スナップショット管理
                   関数                     ビュー(スナップショッ
                                          ト表関数を組み合わ
                                          せて作られている)


                       GET SNAPSHOTコマンド
 スナップショット              (テキスト出力)

      ※スナップショットの使い方については以下を参照
      http://www.ibm.com/developerworks/jp/data/library/dataserver/techdoc/kantandb2.html   © 2011 IBM Corporation
30
モニター表関数(メトリック)
     DB2 9.7から追加された低負荷・高機能の新しいインターフェース
     DB CFGパラメーターでメトリックのモニタリングを設定
     – デフォルトで有効なので準備不要!
     スナップショットと異なり、全てのカウンタはリセットできません
     – DEACTIVATEで消えます
                   Request metrics          (MON_REQ_METRICS) = BASE
                   Activity metrics         (MON_ACT_METRICS) = BASE
                   Object metrics           (MON_OBJ_METRICS) = BASE


     MON_REQ_METRICS
     MON_REQ_METRICS             MON_ACT_METRICS
                                 MON_ACT_METRICS               MON_OBJ_METRICS
                                                               MON_OBJ_METRICS



     システム レベル                   パッケージ・キャッシュ・ステートメ            データ・オブジェクト レベル
                                ント レベル                       MON_GET_TABLE
     MON_GET_SERVICE_SUBCLASS
                                MON_GET_PKG_CACHE_STMT       MON_GET_INDEX
     MON_GET_WORKLOAD
                                                             MON_GET_BUFFERPOOL
     MON_GET_CONNECTION         アクティビティー レベル                 MON_GET_TABLESPACE
     MON_GET_UNIT_OF_WORK       MON_GET_ACTIVITY_DETAILS     MON_GET_CONTAINER
                                                             MON_GET_EXTENT_MOVEMENT_STATUS




                                                                                       © 2011 IBM Corporation
31
モニター表関数のメリット
 データオブジェクトレベルの便利なビューや表関数が揃っている
  – MON_GET_BUFFERPOOL : バッファープールヒット率など
  – MON_GET_TABLE : 表スキャンの数など
  – MON_GET_INDEX :インデックススキャンの数など


 接続毎の情報、サブクラス毎の情報など、取得範囲が調整できる
  例)ABPの動作を除いたデータを取得できる
  – DB2 非同期バックグラウンドプロセス (ABP) エージェント
     • 自動管理(自動RUNSTATSなど)の確認&実行作業を行う
     • クラス:SYSDEFAULTMAINTENANCECLASS で実行されている

     > db2 "SELECT VARCHAR(SERVICE_SUPERCLASS_NAME,30) AS SERVICE_SPARCLASS,
     TOTAL_APP_COMMITS FROM TABLE(MON_GET_SERVICE_SUBCLASS('','',-2)) AS t"


     SERVICE_SPARCLASS             TOTAL_APP_COMMITS
     ------------------------------ --------------------
     SYSDEFAULTSYSTEMCLASS                             0
     SYSDEFAULTMAINTENANCECLASS                    1856
     SYSDEFAULTUSERCLASS                          31272
      3 レコードが選択されました。
                                                                               © 2011 IBM Corporation
32
大まかなデータでも、日々取ってい
簡単な定常監視①                     るといないとでは大違いです

 方針:出来るだけ簡単に、他のソフトを使わずに取得する

 方法① OSの自動実行機能でモニター表関数実行スクリプトを実行する
  => サマリーのモニタービュー(MON_*_SUMMARY)がお勧め
     • 例)MON_DB_SUMMARY - DB全体のサマリ情報
            CONNECT TO MYDB;                          EXPORTコマンド
            VALUES CURRENT TIMESTAMP;                 でCSVに書き出す
            SELECT * FROM SYSIBMADM.MON_DB_SUMMARY;   方法もあります
            CONNECT RESET;
 ※これをsu - db2inst1 -c 'db2 -z today.log -tvf monitor.sql' などで定期的に呼び出す


     MON_DB_SUMMARYビューに含まれる情報(一部)
       • TOTAL_APP_COMMITS (コミット数≒トランザクション数)
       • AVG_RQST_CPU_TIME (平均CPU使用時間[ms])
       • IO_WAIT_TIME_PERCENT (待機時間のうちIOウェイトの比率[%])
       • TOTAL_BP_HIT_RATIO_PERCENT(バッファープールヒット率[%])
       など
                                                             © 2011 IBM Corporation
33
簡単な定常監視②                                       ※なぜかDB2 Express-C 9.7
                                               FP3では使用できません

 方法② MONREPORTモジュール (DB2 9.7 FP1新機能)
  –人が読みやすいレポートを生成する
  例)MONREPORT.DBSUMMARYプロシージャ
    > db2 "CALL MONREPORT.DBSUMMARY(300)" > today.log
    • 指定された秒数の間データをモニタし、レポートを作成する
          あくまで実行していた間の情報しか出力しない




※MONREPORTモジュール
http://publib.boulder.ibm.com/infocenter/d
b2luw/v9r7/topic/com.ibm.db2.luw.sql.rtn.d
oc/doc/r0056368.html
                                                          © 2011 IBM Corporation
34
まとめ

 DB2の運用管理は意外と簡単!
  –自動ストレージで、表領域を簡単に
  –バックアップは、ヒストリー機能を使って簡単に
  –モニター表関数の便利なビューで、簡単定常監視

 次のステップ
  –以下に技術情報が集められています
      • http://www.ibm.com/developerworks/jp/data/products/db2/db2_97.html

     –お勧め資料
      • DB2 V9.7 運用管理ガイド: データベース・モニタリング
         http://www.ibm.com/developerworks/jp/data/products/db2/operation-management-
           guide/v97_database-monitor.html



      • DB2 V9.5 運用管理ガイド:DB2 for LUW V9.5 データベース・メンテナンス
         http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/0013DB49



                                                                               © 2011 IBM Corporation
35
参考資料
 CLUB DB2の過去セミナー資料公開中
 – http://ibm.com/developerworks/wikis/display/clubdb2/materials

 カンタン!DB2テクテク第1歩 基本機能編
 – 若干古い資料ですが、各種基本コマンドの使い方がやさしく解説されています
 – http://ibm.com/jp/software/data/developer/library/techdoc/kantandb2.html

 db2pd利用ガイド DB2 v9対応版
 – 問題判別や監視に大変有用なdb2pdの使い方解説
 – http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/00217BBA


 DB2 Express-Cの導入方法解説(無料のDB2で試しましょう!)
 – http://ibm.com/developerworks/jp/data/library/db2/j_d-db2v97wininstall/ (Windows用
   v9.7)
 – http://ibm.com/developerworks/jp/offers/db2express-c/installwin_v95/ (Windows用 v9.5)
 – http://ibm.com/developerworks/jp/offers/db2express-c/installlin_v95/ (Linux用 v9.5)




                                                                              © 2011 IBM Corporation
36
参考資料(マニュアル)
 DB2のオンラインドキュメント:インフォメーションセンター
 常に最新の情報が閲覧できます。検索機能付き
 – DB2 9.7版
     • http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp
 – DB2 9.5版
     • http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp
 – DB2 9.1版
     • http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp

 – ネットワークに繋がっていなくても閲覧できる「オフライン版」
   • http://db2.jugem.cc/?eid=1933

 DB2のPDF版マニュアル
 日本語、英語など各国語版がダウンロード可能です
 – DB2 9.7版
     • http://ibm.com/support/docview.wss?rs=71&uid=swg27015149
 – DB2 9.5版
     • http://ibm.com/support/docview.wss?rs=71&uid=swg27009728
 – DB2 9.1版
     • http://ibm.com/support/docview.wss?rs=71&uid=swg27009553
                    DB2の日本語ドキュメント一覧は以下の短縮URLからも辿れます
                    http://j.mp/db2docsja
                                                                        © 2011 IBM Corporation
37
CREATE DATABASEのオプション
     db2 "CREATE DATABASE データベース名
           ON ストレージパス DBPATH ON データベースパス
           USING CODESET コードセット TERRITORY JP
           COLLATE USING ソート種別
           PAGESIZE 4 K"

     データベース名            作成するDBの名前(8バイトまで)
     ストレージパス            コンテナを作成するディレクトリ。カンマで複数指定可能
     データベースパス           DBの構成情報を格納するディレクトリ
     コードセット             どの文字コードで保存するのかを決める。SJIS(IBM-943),Unicode(UTF-8)など
     ソート種別              文字の並び順序の指定
                        UTF-8の場合:SYSTEM_943_JP が推奨
                        SJISやEUCの場合: IDENTITY が推奨

     ページサイズ             4 Kが推奨。ただしデータウェアハウス用途やXMLを格納する場合は32 Kが推奨


      注)以前はWindows版にはDBPATHをドライブ名でしか指定できないという制限がありました。現在はその
      制限は撤廃されていますが、レジストリー変数DB2_CREATE_DB_ON_PATH を「ON」に設定しないと
      ディレクトリが指定できません。(デフォルトではOFF)
      > db2set DB2_CREATE_DB_ON_PATH=ON                           © 2011 IBM Corporation
38
インスタンスとデータベース
     DB2 システム構成概略

                                             インスタンス1(50000番)
                    DB2インスタンス1の待
                    ち受けポート(50000番)             データベース
                                                DB_A    データベース
                                                         DB_B
                 DB_Aに接続



・インスタンスは起動/停止の単位                                     インスタンス2(50010番)
                                     起動/停止
       db2start (開始), db2stop(停止)
                                              DB情報
・複数のインスタンスを作成可能です
                                               収集          データベース
・インスタンス内に複数のデータベースを作成可能               管理サーバ                 DB_C
                                       (523番)
・1インスタンスにつき、1つのTCP/IPポートを使用



                                                                © 2011 IBM Corporation
39
構成パラメータ
     DB2の構成パラメータは3種類              システム(レジストリ)
     – それぞれ影響範囲が異なる               インスタンス (DBM CFG)
     – 調整は、DB CFGが中心
                                    データベース (DB CFG)


           影響範囲     取得                   更新
レジストリ変     システム全体   db2set [-all]        db2set REG1=VAL1
数          もしくはイン
           スタンス内
データベース インスタンス       GET DBM CFG          UPDATE DBM CFG USING
マネージャ     内                              cfg1 val1 [cfg2
(DBM)構成パラ                                val2 ...]
メーター
データベース     データベース   GET DB CFG FOR db名   UPDATE DB CFG FOR db名
(DB)構成パラ                                 USING cfg1 val1 [cfg2
メーター                                     val2 ..]
                                                       © 2011 IBM Corporation
40

CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門

  • 1.
    CLUB DB2 #122 CLUBDB2 第122回 DB2管理本の著者が教える 簡単運用管理入門 2011/04/22 日本アイ・ビー・エム 下佐粉 昭 (しもさこ あきら) rev. 1.2 この資料は下記URLでダウンロード可能です http://ibm.com/developerworks/wikis/display/clubdb2/materials © 2011 IBM Corporation
  • 2.
    自己紹介 下佐粉 昭 (しもさこ あきら ) 和歌山県生まれ 2001年 IBMに中途入社 以来、DB2関連の仕事多し 現在はビジネスパートナー様向け技術支援 ■書籍 「即戦力のDB2管理術」 「XML-DB開発 実技コース」(共著) 「DB2 逆引きリファレンス」(共著) ■オンライン Twitter - @simosako 内容は全てWEBで公開しています! – http://twitter.com/simosako http://db2watch.com/ Unofficial DB2 Blog – http://db2.jugem.cc/ © 2011 IBM Corporation 2
  • 3.
    今日の目的 データベースの設計・運用管理はシステムによって色々事情が異なります でも小・中規模環境であれば「割り切った」運用管理で省力化が可能です –専任の担当者が置けない小規模システムでは「割り切り」が重要 小・中規模向けのデータベース作成~運用のコツを把握しましょう 【宣伝】基礎から詳しく学習したい方は、ぜひ自著をご参照ください! 即戦力のDB2管理術~仕組みからわかる効率的管理のノウハウ 2011年4月8日発売 (技術評論社) 下佐粉昭 著 A5判/432ページ ISBN 978-4-7741-4597-6 http://db2.jugem.cc/?eid=2341 (書籍紹介) © 2011 IBM Corporation 3
  • 4.
    目次 ①本番用途のデータベースを簡単に作る –文字コードに注意 –最低限必要な設定 –自動ストレージ ②簡単運用パターン –バックアップ(BACKUP) –データの再編成(REORG) –統計情報の更新(RUNSTATS) ③簡単に監視する –MMC –モニター表関数・ビュー © 2011 IBM Corporation 4
  • 5.
  • 6.
    データベースを作る CREATE DATABASEで簡単に作れるが、文字コードだけは注意! 文字コード –データベースをディスクに記録する際の文字コードを指定 • 文字コードによってディスク使用量が異なる –クライアントと文字コードが異なる場合、DB2によって自動的に変換 SJIS→Unicode変換 DB2サーバ SJISアプリ DB2ク ライア ント Unicode Unicode→SJIS変換 データベース 簡単な文字コードの選択方法 –クライアントに合わせる •例)Visual Basicクライアントの場合→ IBM-943(SJIS)を選択 –クライアントが複数の文字コードの場合→ UTF-8(Unicode)を選択 –よく分からない場合→ UTF-8(Unicode)を選択 © 2011 IBM Corporation 6
  • 7.
    DB2の内部構造 DB2クライアント SQL インスタンス データベース 更新処理情報 エージェント ロガー バッファープール ログバッファー I/Oサーバー I/Oクリーナー ログパス 表は表ス 表スペース ペース上に コンテナー コンテナー 作成される © 2011 IBM Corporation 7
  • 8.
    本番環境に最低限必要な設定 ログ領域 – (できるだけ)表スペースとは別ディスクにする • 更新処理が重要な場合は高速なディスクを用意する • DB CFGのNEWLOGPATHで後から変更可能 – サイズを増やす • DB CFGのLOGPRIMARY(数)を増やす • DB CFGのLOGFILSZ(サイズ)を増やす – アーカイブロギングモードに変更する • DB CFGのLOGARCHMETH1でディレクトリを指定する 循環ロギング アーカイブロギング 1 2次ログ 1 2 3 4 5 (LOGSECOND) データベース・ログ・パス n 2 1 2 (LOGPATH) アーカイブ・ログ・パス LOGARCHMETH1で 3 指定したディレクトリ 1次ログ (LOGARCHMETH1) へコピー。 (LOGPRIMARY) データベース・ログ・パス リストア時に利用可 能にする。 (LOGPATH) © 2011 IBM Corporation 8
  • 9.
    表スペース 表スペースの管理 コンテナー コンテナー コンテナー DB2は柔軟に表スペースを作成可能 –表スペース:表を置くための領域。1つ~複数のコンテナで構成 –コンテナ:表を置くディスク領域そのもの –DMSとSMS:2つのタイプから選択可能 • Large DMS : 高速。一般表用途 • SMS : 表の作成、削除が速く、一時表用途 –キャッシュするバッファープールを表スペース毎に設定可能 Large CREATE LARGE TABLESPACE MYTS1 結構面倒... DMSで作成 MANAGED BY DATABASE USING (FILE 'D:¥db2data¥container1' 200M, 2つのコンテナをファイル FILE 'E:¥db2data¥container2' 200M) で定義 AUTORESIZE YES INCREASESIZE 100M 自動拡張を設定。サイズが不足した場合は MAXSIZE 10G 100MBずつ増加し、最大10GBまで拡張する BUFFERPOOL MYBP1 バッファープールを指定 © 2011 IBM Corporation 9
  • 10.
    表スペース管理を簡単にする 自動ストレージ機能を使って表スペース管理を簡単にする – CREATE DATABASEで「ストレージパス」を指定するだけ > db2 "CREATE DB MYDB ON 'D:¥db2data','E:¥db2data¥' DBPATH ON 'C:' – 表スペース作成が劇的に簡単に! • DB2が自動的にストレージパス上にコンテナを作成し、適切な表スペースタイプ を選択してくれる > db2 "CREATE TABLESPACE MYTS2" (Large DMSで作成される) > db2 "CREATE USER TEMPORARY TABLESPACE USERTEMP1" (SMSで作成される) – ストレージパスに複数のデバイスを設定すると自動的にストライピング – ストレージパスがRAIDデバイスの場合、以下を設定するだけで並列アクセスに • db2set DB2_PARALLEL_IO=* © 2011 IBM Corporation 10
  • 11.
    (参考)自動ストレージの指定方法:サンプル • ユーザ表スペースの初期サイズを300MB、100MB単位で増加、最大10GBを指定 > db2"CREATE DATABASE MYDB ON 'D:¥db2data','E:¥db2data¥' DBPATH ON 'C:' USER TABLESPACE MANAGED BY AUTOMATIC STORAGE INITIALSIZE 300 M INCREASESIZE 100 M MAXSIZE 10 G" ※サイズの指定は数字と単位 の間に空白が必用です(300M ではなく、300 M) 初期サイズと増加サイズ、最大サイズを指定して表スペースを追加 > db2 "CREATE TABLESPACE MYTS2 INITIALSIZE 100 M INCREASESIZE 10 M MAXSIZE 1 G" ※サイズを指定しなかった場合、 初期サイズ30MB,自動増加 100MB、最大10GBで作成 © 2011 IBM Corporation 11
  • 12.
    ここまでのまとめ 自動ストレージを有効にしてUTF-8(もしくはIBM-943)でデータベースを作る db2setDB2_PARALLEL_IO=* (※ストレージパスがRAIDデバイスの場合のみ) db2 "CREATE DATABASE MYDB ON D:¥db2data1,E:¥db2data2 DBPATH ON C: USING CODESET UTF-8 TERRITORY JP" ログのディレクトリとサイズ調整 db2 "UPDATE DB CFG FOR MYDB USING LOGPRIMARY 10" db2 "UPDATE DB CFG FOR MYDB USING LOGFILSZ 10000" db2 "UPDATE DB CFG FOR MYDB USING NEWLOGPATH F:¥db2log" アーカイブログモードに変更して一度フルバックアップ db2 "UPDATE DB CFG FOR MYDB USING LOGARCMETH1 DISK:G:¥db2arclog" db2 "BACKUP DB mydb TO G:¥db2backup" © 2011 IBM Corporation 12
  • 13.
    ②簡単運用パターン © 2011 IBM Corporation
  • 14.
    最低限必要な運用管理 バックアップ –BACKUPコマンド –最も大切。必須の作業 表の再編成 –REORGコマンド 日常的に必要となる管理作業 –更新が多い表には必要 =最低限必要な作業 統計情報の更新 –RUNSTATSコマンド –アクセスプラン(実行計画)を良いものに 維持するために必要 © 2011 IBM Corporation 14
  • 15.
    DB2のバックアップ 表領域、ログの両方をバックアップする事が重要 オンライン・オフライン どちらでも実行可能 表領域- CREATE TABLESPACE Backupコマンドで指定した領域 Backup コンテナ コンテナ コンテナ コマンド Backupファイル 表データそのものが入っている INCLUDE LOGSでバックアップファイル 内に最低限必要なLOGを含める ログ領域- LOGPATHで指定 LOGARCHMETH1で指定した領域 logmgr アクティブLOG プロセス アーカイブLOGファ アーカイブLOGファ アーカイブLOGファ イル ファイル イル イル トランザクションを記録したログ logmgrはアクティブLOGが一定のサイズに達すると DB2より自動的に起動され、LOGARCHMETH1で指 定された先にLOGをコピーする © 2011 IBM Corporation 15
  • 16.
    BACKUP DB2のバックアップは、BACKUP DATABASEコマンドで行うのが基本 BACKUP DATABASE MYDB TO dir [ONLINE] [INCREMENTAL [DELTA]] [COMPRESS] [INCLUDE LOGS] – 機能 • 差分バックアップ可能 (INCREMENTAL [DELTA]キーワード) • オンラインバックアップ可能(ONLINEキーワード) • イメージの圧縮可能(COMPRESSキーワード) • 必要なログファイルをバックアップイメージに含める(INCLUDE LOGSキーワード) – データだけでなく、構成パラメタやコンテナ(表領域のディスク)の物理位置等もバック アップされる – 差分やオンライン・オフラインを自由に組み合わせる事が可能 • ファイル名は自動的に付けられるので、定期的に実行するのも簡単 ※差分バックアップを利用するにはDB CFGのTRACKMODをYESに設定する必要がある >db2 "UPDATE DB CFG FOR MYDB USING TRACKMOD YES" © 2011 IBM Corporation 16
  • 17.
    BACKUPを簡単にする BACKUPの面倒なところ① Q:差分とか、オンラインとかオフラインとかどのオプションを使えば良いの? A:小・中規模DB向けに割り切れば... • 小さいデータベースは毎回全体バックアップでOK • 停止時間中にオフライン もしくは ONLINE+INCLUDE LOGS > db2 "BACKUP DB MYDB TO /db2backup" > db2 "BACKUP DB MYDB TO /db2backup ONLINE INCLUDE LOGS" BACKUPの面倒なところ② – いつ消すのか? – 古いバックアップ・イメージ(バックアップ・ディレクトリ) – 古いアーカイブ・ログ(アーカイブ・ログ・パス) • 間違ったファイルを消すと一大事に... そこでリカバリー履歴ファイルを活用して簡単に運用 © 2011 IBM Corporation 17
  • 18.
    リカバリー履歴ファイルとAUTO_DEL_REC_OBJ リカバリー履歴ファイル – BACKUPやLOADコマンドの履歴を記録している – LIST HISTORYコマンドやSYSIBMADM.DB_HISTORY表で閲覧可能 >db2 "LIST HISTORY BACKUP ALL FOR MYDB" – PRUNE HISTORYコマンドで古い履歴を削除可能 AUTO_DEL_REC_OBJ – ONにすると、PRUNE HISTORY時に関連するオブジェクトが削除可能に > db2 "UPDATE DB CFG FOR MYDB USING AUTO_DEL_REC_OBJ ON" 以下のように簡単運用が可能 – 自動実行シェルなどで、毎日定期的にBACKUPコマンドを実行 – 一ヶ月に一回などのタイミングでPRUNE HISTORY ... AND DELETEを実行して 履歴とともに古いデータを消す 例) > db2 "PRUNE HISTORY 20110219223044 AND DELETE" © 2011 IBM Corporation 18
  • 19.
    REORG 更新処理によってデータはじょじょに”ばらばら”になる – DB2ではREORG コマンドでデータを並べなおす REORG TABLE テーブル名 [INPLACE] [ALLOW {READ|WRITE|NO} ACCESS] REORG INDEXES ALL FOR TABLE テーブル名 [ALLOW {READ|WRITE|NO} ACCESS] REORGCHKコマンドでREORGの必要性を確認 > REORGCHK CURRENT STATISTICS [ON TABLE テーブル名] REORGのオプション:シャドーコピーかインプレースか? – REORG中に表に書き込みたいなら、INPLACEで(ログあふれに注意) メリット デメリット シャドーコピー 高速 テンポラリ領域が必要 インデックスのREORGが可能 REORG中は書き込み不可 インプレース テンポラリ領域が不要 インデックスを別にREROGする必要 REORG中の更新アクセス可能 同一表領域に10-20%の空きが必要 一時停止、再開が可能 ログが増える © 2011 IBM Corporation 19
  • 20.
    REORGを簡単にする:REORGの回数を減らす① ①PCTFREE=0のケース(デフォルト):ページサイズギリギリまで行を 詰めこむように配置。行が長くなるとオーバーフローしやすい ページ 行1 行2 行3 行4 行1(更新後)※オーバーフロー行 ②PCTFREE=20のケース:ページサイズに20%の余白を残して配置さ れる。この例では行3が入らなくなり、次のページに格納されている 20%の余白 ALTER TABLE tab1 PCTFREE 20; REORG TABLE tab1; 行1 行2 行3 行4 ③PCTFREE=20のケースで行1が長いデータで更新された状態。余 白があるため、行1がオーバーフローせずに済んでいる 行1(更新後) 行2 行3 行4 © 2011 IBM Corporation 20
  • 21.
    REORGを簡単にする:REORGの回数を減らす② クラスターインデックスを作成することで、データの並び崩れにくくなる 通常のインデックス クラスターインデックス CREATE INDEX idx1 ON tab(c) CREATE INDEX idx2 ON tab(c) CLUSTER D E F C C D E F インデックスの順序とデータの インデックスの順序とデータの 配置順が無関係なので散ら 配置順が一致するように配置さ ばって配置されている れている © 2011 IBM Corporation 21
  • 22.
    統計情報の更新:なぜ統計情報の更新が必要なのか より良い「アクセスプラン(実行計画)」作成のため データが変更されたら統計情報を更新する必要がある DB2クライアント SQL ①SQLの書き換え エージェント ②複数のアクセス プラン候補を作成 統計情報 ③コストの見積もり ④アクセスプランの 決定 © 2011 IBM Corporation 22
  • 23.
    RUNSTATS 多くの場合、この RUNSTATSコマンドにて統計情報を更新する 基本形でOK RUNSTATS ON TABLE スキーマ名.表名 [ON ALL COLUMNS] データに「偏り」がある場合、 もう少し進んだ使い方 分散統計を試してください – 例①分散統計付で収集する • RUNSTATS ON TABLE ... WITH DISTRIBUTION AND INDEXES ALL – 例②すべての列について統計を収集し、c1列についてLIKE統計を収集する • RUNSTATS ON TABLE ... ON ALL COLUMNS AND COLUMNS (c1 LIKE STATISTICS) – 例③約10%のデータをサンプルとして使用して統計を収集する • RUNSTATS ON TABLE ... ON ALL COLUMNS TABLESAMPLE SYSTEM(10) • RUNSTATS ON TABLE ... ON ALL COLUMNS TABLESAMPLE BERNOULLI(10) ■参考文献 「DB2 UDBバージョン8.2のRUNSTATS」(サンプル多数で分かりやすい) http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/002B4A0C © 2011 IBM Corporation 23
  • 24.
    RUNSTATSを簡単にする:統計プロファイル 表の特性に合わせて毎回RUNSTATSのオプションを変えるのが大変 – SET PROFILEでRUNSTATSのオプションが記憶される • SYSCAT.TABLESのSTATISTICS_PROFILE列で確認可能 >db2 "RUNSTATS ON TABLE SIM.EMPLOYEE WITH DISTRIBUTION AND INDEXES ALL SET PROFILE" >db2 "SELECT VARCHAR(TABNAME,10),VARCHAR(STATISTICS_PROFILE,100) FROM SYSCAT.TABLES WHERE TABNAME = 'EMPLOYEE' AND TABSCHEMA='SIM'" 1 2 ---------- ---------------------------------------------------------------------------------------------------- EMPLOYEE RUNSTATS ON TABLE "SIM"."EMPLOYEE" ON ALL COLUMNS WITH DISTRIBUTION ON ALL COLUMNS AND INDEXES ALL USE PROFILEを付けて実行すると、セットしたオプションで実行される > db2 "RUNSTATS ON TABLE SIM.EMPLOYEE USE PROFILE" NONE PROFILEを付けて実行すると、プロファイルを削除 > db2 "RUNSTATS ON TABLE SIM.EMPLOYEE UNSET PROFILE" © 2011 IBM Corporation 24
  • 25.
    RUNSTATSを簡単にする:自動化 RUNSTATSを自動的に行う – 自動RUNSTATS • 2時間おきの非同期RUNSTATSがスケジュールされる v9.7からデフォ – 自動ステートメント統計(リアルタイム統計収集) ルトでON • SQLを実行しようとした瞬間に、必要なら統計情報を更新 自動保守 (AUTO_MAINT) = ON データベース自動バックアップ (AUTO_DB_BACKUP) = OFF 自動化全体の 表自動保守 (AUTO_TBL_MAINT) = ON 親パラメータ 自動 RUNSTATS (AUTO_RUNSTATS) = ON 自動ステートメント統計 (AUTO_STMT_STATS) = ON (DB CFG) 自動再編成 (AUTO_REORG) = OFF 簡単運用の方法 – 小・中規模のシステムでは自動RUNSTATSがONで問題ない • データを入れた最初だけは手動で実行し、あとは自動に任せる • 基本形以外のRUNSTATSが必要な表には統計プロファイルを作成しておく • (オプション)バックアップのタイミングでdb2look -m で統計情報も保存する > db2look -m -d MYDB -z SIM -o stat.sql © 2011 IBM Corporation 25
  • 26.
    ③簡単に監視する © 2011 IBM Corporation
  • 27.
    監視はなぜ必要? 定常監視が重要。 継続的に記録し続けることで、 システムに起こっている変化が 定量的に把握出来るようになります。 時間 © 2011 IBM Corporation 27
  • 28.
    監視ポイント 小・中規模のシステムでは、DB2の内部情報を詳細に把握するより外部を含めた全体 のトラブルを把握することがより大切 – とはいえ、DB2内部もある程度は取っておきたい.. DB2サーバー DB2関連プロセ •バッファープールヒット率 スの死活監視 •デッドロック数 DB2内部の動 ping等による DB2 DB2 •ソート時間 DB2 作を監視 ネットワーク導 •トランザクション数 通確認 : NIC CPU CPUやメモリ 使用率の監視 メモリ ストレージ全体の使 用率の監視 DB2やOSロ OSのログ DB2の表ス グファイルの DB2表スペースの ペース 監視 DB2の診断情報 使用率の監視 © 2011 IBM Corporation 28
  • 29.
    Windows環境ではMMCが便利 – OSの情報とDB2内部情報を一括して取得できる – 低負荷・リモートから取得可能 – グラフを右クリック⇒カウンタの追加 • DB2 Databases(DBレベルの情報) DBが活性化 ロックウェイト、ソートオーバーフロー 等多数 (Activate)されていな • DB2 Applications (アプリケーションレベルの情報) いと表示されません • DB2 Database Manager(インスタンスレベルの情報) インスタンスが開始 (db2start)していない と表示されません ローカル、もしくはリモート のコンピュータからカウン タデータを収集できます © 2011 IBM Corporation 29
  • 30.
    DB2のモニタリング機能 MONREPORTモジュール モニター表関数・ビュー (テキスト出力) (メトリック) モニタービュー (MON_*から始まる モニター表関数 ビュー。モニター表関 (MON_*で始ま 数を組み合わせて作 る表関数) られている) モニターエレ メント(監視項 目) スナップショット表 スナップショット管理 関数 ビュー(スナップショッ ト表関数を組み合わ せて作られている) GET SNAPSHOTコマンド スナップショット (テキスト出力) ※スナップショットの使い方については以下を参照 http://www.ibm.com/developerworks/jp/data/library/dataserver/techdoc/kantandb2.html © 2011 IBM Corporation 30
  • 31.
    モニター表関数(メトリック) DB2 9.7から追加された低負荷・高機能の新しいインターフェース DB CFGパラメーターでメトリックのモニタリングを設定 – デフォルトで有効なので準備不要! スナップショットと異なり、全てのカウンタはリセットできません – DEACTIVATEで消えます Request metrics (MON_REQ_METRICS) = BASE Activity metrics (MON_ACT_METRICS) = BASE Object metrics (MON_OBJ_METRICS) = BASE MON_REQ_METRICS MON_REQ_METRICS MON_ACT_METRICS MON_ACT_METRICS MON_OBJ_METRICS MON_OBJ_METRICS システム レベル パッケージ・キャッシュ・ステートメ データ・オブジェクト レベル ント レベル MON_GET_TABLE MON_GET_SERVICE_SUBCLASS MON_GET_PKG_CACHE_STMT MON_GET_INDEX MON_GET_WORKLOAD MON_GET_BUFFERPOOL MON_GET_CONNECTION アクティビティー レベル MON_GET_TABLESPACE MON_GET_UNIT_OF_WORK MON_GET_ACTIVITY_DETAILS MON_GET_CONTAINER MON_GET_EXTENT_MOVEMENT_STATUS © 2011 IBM Corporation 31
  • 32.
    モニター表関数のメリット データオブジェクトレベルの便利なビューや表関数が揃っている – MON_GET_BUFFERPOOL : バッファープールヒット率など – MON_GET_TABLE : 表スキャンの数など – MON_GET_INDEX :インデックススキャンの数など 接続毎の情報、サブクラス毎の情報など、取得範囲が調整できる 例)ABPの動作を除いたデータを取得できる – DB2 非同期バックグラウンドプロセス (ABP) エージェント • 自動管理(自動RUNSTATSなど)の確認&実行作業を行う • クラス:SYSDEFAULTMAINTENANCECLASS で実行されている > db2 "SELECT VARCHAR(SERVICE_SUPERCLASS_NAME,30) AS SERVICE_SPARCLASS, TOTAL_APP_COMMITS FROM TABLE(MON_GET_SERVICE_SUBCLASS('','',-2)) AS t" SERVICE_SPARCLASS TOTAL_APP_COMMITS ------------------------------ -------------------- SYSDEFAULTSYSTEMCLASS 0 SYSDEFAULTMAINTENANCECLASS 1856 SYSDEFAULTUSERCLASS 31272 3 レコードが選択されました。 © 2011 IBM Corporation 32
  • 33.
    大まかなデータでも、日々取ってい 簡単な定常監視① るといないとでは大違いです 方針:出来るだけ簡単に、他のソフトを使わずに取得する 方法① OSの自動実行機能でモニター表関数実行スクリプトを実行する => サマリーのモニタービュー(MON_*_SUMMARY)がお勧め • 例)MON_DB_SUMMARY - DB全体のサマリ情報 CONNECT TO MYDB; EXPORTコマンド VALUES CURRENT TIMESTAMP; でCSVに書き出す SELECT * FROM SYSIBMADM.MON_DB_SUMMARY; 方法もあります CONNECT RESET; ※これをsu - db2inst1 -c 'db2 -z today.log -tvf monitor.sql' などで定期的に呼び出す MON_DB_SUMMARYビューに含まれる情報(一部) • TOTAL_APP_COMMITS (コミット数≒トランザクション数) • AVG_RQST_CPU_TIME (平均CPU使用時間[ms]) • IO_WAIT_TIME_PERCENT (待機時間のうちIOウェイトの比率[%]) • TOTAL_BP_HIT_RATIO_PERCENT(バッファープールヒット率[%]) など © 2011 IBM Corporation 33
  • 34.
    簡単な定常監視② ※なぜかDB2 Express-C 9.7 FP3では使用できません 方法② MONREPORTモジュール (DB2 9.7 FP1新機能) –人が読みやすいレポートを生成する 例)MONREPORT.DBSUMMARYプロシージャ > db2 "CALL MONREPORT.DBSUMMARY(300)" > today.log • 指定された秒数の間データをモニタし、レポートを作成する あくまで実行していた間の情報しか出力しない ※MONREPORTモジュール http://publib.boulder.ibm.com/infocenter/d b2luw/v9r7/topic/com.ibm.db2.luw.sql.rtn.d oc/doc/r0056368.html © 2011 IBM Corporation 34
  • 35.
    まとめ DB2の運用管理は意外と簡単! –自動ストレージで、表領域を簡単に –バックアップは、ヒストリー機能を使って簡単に –モニター表関数の便利なビューで、簡単定常監視 次のステップ –以下に技術情報が集められています • http://www.ibm.com/developerworks/jp/data/products/db2/db2_97.html –お勧め資料 • DB2 V9.7 運用管理ガイド: データベース・モニタリング http://www.ibm.com/developerworks/jp/data/products/db2/operation-management- guide/v97_database-monitor.html • DB2 V9.5 運用管理ガイド:DB2 for LUW V9.5 データベース・メンテナンス http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/0013DB49 © 2011 IBM Corporation 35
  • 36.
    参考資料 CLUB DB2の過去セミナー資料公開中 – http://ibm.com/developerworks/wikis/display/clubdb2/materials カンタン!DB2テクテク第1歩 基本機能編 – 若干古い資料ですが、各種基本コマンドの使い方がやさしく解説されています – http://ibm.com/jp/software/data/developer/library/techdoc/kantandb2.html db2pd利用ガイド DB2 v9対応版 – 問題判別や監視に大変有用なdb2pdの使い方解説 – http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/00217BBA DB2 Express-Cの導入方法解説(無料のDB2で試しましょう!) – http://ibm.com/developerworks/jp/data/library/db2/j_d-db2v97wininstall/ (Windows用 v9.7) – http://ibm.com/developerworks/jp/offers/db2express-c/installwin_v95/ (Windows用 v9.5) – http://ibm.com/developerworks/jp/offers/db2express-c/installlin_v95/ (Linux用 v9.5) © 2011 IBM Corporation 36
  • 37.
    参考資料(マニュアル) DB2のオンラインドキュメント:インフォメーションセンター 常に最新の情報が閲覧できます。検索機能付き – DB2 9.7版 • http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp – DB2 9.5版 • http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp – DB2 9.1版 • http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp – ネットワークに繋がっていなくても閲覧できる「オフライン版」 • http://db2.jugem.cc/?eid=1933 DB2のPDF版マニュアル 日本語、英語など各国語版がダウンロード可能です – DB2 9.7版 • http://ibm.com/support/docview.wss?rs=71&uid=swg27015149 – DB2 9.5版 • http://ibm.com/support/docview.wss?rs=71&uid=swg27009728 – DB2 9.1版 • http://ibm.com/support/docview.wss?rs=71&uid=swg27009553 DB2の日本語ドキュメント一覧は以下の短縮URLからも辿れます http://j.mp/db2docsja © 2011 IBM Corporation 37
  • 38.
    CREATE DATABASEのオプション db2 "CREATE DATABASE データベース名 ON ストレージパス DBPATH ON データベースパス USING CODESET コードセット TERRITORY JP COLLATE USING ソート種別 PAGESIZE 4 K" データベース名 作成するDBの名前(8バイトまで) ストレージパス コンテナを作成するディレクトリ。カンマで複数指定可能 データベースパス DBの構成情報を格納するディレクトリ コードセット どの文字コードで保存するのかを決める。SJIS(IBM-943),Unicode(UTF-8)など ソート種別 文字の並び順序の指定 UTF-8の場合:SYSTEM_943_JP が推奨 SJISやEUCの場合: IDENTITY が推奨 ページサイズ 4 Kが推奨。ただしデータウェアハウス用途やXMLを格納する場合は32 Kが推奨 注)以前はWindows版にはDBPATHをドライブ名でしか指定できないという制限がありました。現在はその 制限は撤廃されていますが、レジストリー変数DB2_CREATE_DB_ON_PATH を「ON」に設定しないと ディレクトリが指定できません。(デフォルトではOFF) > db2set DB2_CREATE_DB_ON_PATH=ON © 2011 IBM Corporation 38
  • 39.
    インスタンスとデータベース DB2 システム構成概略 インスタンス1(50000番) DB2インスタンス1の待 ち受けポート(50000番) データベース DB_A データベース DB_B DB_Aに接続 ・インスタンスは起動/停止の単位 インスタンス2(50010番) 起動/停止 db2start (開始), db2stop(停止) DB情報 ・複数のインスタンスを作成可能です 収集 データベース ・インスタンス内に複数のデータベースを作成可能 管理サーバ DB_C (523番) ・1インスタンスにつき、1つのTCP/IPポートを使用 © 2011 IBM Corporation 39
  • 40.
    構成パラメータ DB2の構成パラメータは3種類 システム(レジストリ) – それぞれ影響範囲が異なる インスタンス (DBM CFG) – 調整は、DB CFGが中心 データベース (DB CFG) 影響範囲 取得 更新 レジストリ変 システム全体 db2set [-all] db2set REG1=VAL1 数 もしくはイン スタンス内 データベース インスタンス GET DBM CFG UPDATE DBM CFG USING マネージャ 内 cfg1 val1 [cfg2 (DBM)構成パラ val2 ...] メーター データベース データベース GET DB CFG FOR db名 UPDATE DB CFG FOR db名 (DB)構成パラ USING cfg1 val1 [cfg2 メーター val2 ..] © 2011 IBM Corporation 40