データベース・モニターの開始 (STRDBMON) コマンド

データベース・モニターの開始 (STRDBMON) コマンドは、指定されたジョブ、システム上のすべてのジョブ、または、選択した一連のジョブに対し、データベース・パフォーマンス統計の収集を開始します。 この統計は、ユーザー指定のデータベース・テーブルとメンバーに入れられます。 テーブルまたはメンバーが存在しない場合、QSYS ライブラリーの QAQQDBMN テーブルに基づき、テーブルまたはメンバーが作成されます。 テーブルおよびメンバーが存在する場合は、指定されたテーブルのレコード形式が同じであることを保証するため検査されます。

STRDBMON コマンドで開始された各モニターには、個々のモニターを一意的に識別するためのモニター ID が生成されます。 このモニター ID は、ENDDBMON コマンドで終了するモニターを一意的に識別する場合にも用いられます。 このモニター ID は、STRDBMON コマンドが実行されるたびに生成される情報メッセージ CPI436A で返されます。 このモニター ID は、QQQ3018 データベース・モニター・レコードの列 QQC101 または QSYS2.DATABASE_MONITOR_INFO カタログにもあります。

概して、モニターには 2 種類あります。プライベート・モニターとは、1 つの特定のジョブ (または現在のジョブ) に限定したモニターを意味します。 特定のジョブで一度に開始できるモニターは 1 つだけです。 例えば、同じジョブ内で、STRDBMON JOB(*) の後にもう 1 つ STRDBMON JOB(*) を指定することはできません。 パブリック・モニターは、複数のジョブ間でデータを収集するモニターです。一度に最大で 10 個のパブリック・モニターをアクティブにすることができます。例えば、指定したパブリック・モニターの最大数が 10 個を超えていなければ、STRDBMON JOB(*ALL) の後にもう 1 つ STRDBMON JOB(*ALL) を指定できます。 どのような特定ジョブでも、同時にパブリック・モニターを 10 個、プライベート・モニターを 1 個、アクティブにすることができます。

複数のモニターに同じ出力ファイルが指定された場合には、各ジョブで、データベース統計レコードをコピーしたデータが 1 つだけ、ファイルに書き込まれます。例えば、STRDBMON OUTFILE(LIB/TABLE1) JOB(*) と STRDBMON OUTFILE(LIB/TABLE1) JOB(*ALL) では同じ出力ファイルが、宛先に指定されています。 現行ジョブについて、プライベート・モニター用として 1 つ、パブリック・モニター用として 1 つのように、データベース統計レコードのコピーが 2 つあることはありません。 データベース統計レコードのコピーは 1 つだけです。

すべてのジョブでモニター (パブリック・モニター) が開始されている状態では、待ち行列で待機中のジョブ、またはモニター中に開始されたジョブは、モニター対象データに含まれます。 モニターが特定のジョブ (プライベート・モニター) で開始されている場合、コマンドを出した時点で、そのジョブがシステム内でアクティブでなければなりません。 システム内の各ジョブは、プライベート・モニター 1 個、および最大 10 個のパブリック・モニターによって、並行してモニターすることができます。

STRDBMON コマンドにより、ジョブで実行されている照会の特定のセット、またはサブセットの統計レコードを収集できます。 このフィルタリングは、ジョブ名、ユーザー・プロファイル、照会テーブルの名前、照会の見積もり実行時間、TCP/IP アドレスに対して、またはこれらのフィルターを組み合わせて実行することができます。 STRDBMON フィルターは任意のモニター用にキャプチャーする統計レコードの数を最小限に抑えるために役立ちます。

例 1: 共通モニターを開始する

  STRDBMON   OUTFILE(QGPL/FILE1)  OUTMBR(MEMBER1 *ADD)
   JOB(*ALL)  FRCRCD(10))

このコマンドは、システム上のジョブすべてに対するデータベース・モニタリングを開始します。 パフォーマンスの統計が、QGPL ライブラリーにあるファイル名 FILE1 の、メンバー名 MEMBER1 に追加されます。 10 件のレコードが蓄積された段階で、ファイルに書き込まれます。

例 2: 専用モニターを開始する

  STRDBMON   OUTFILE(*LIBL/FILE3)  OUTMBR(MEMBER2)
   JOB(134543/QPGMR/DSP01)  FRCRCD(20)  

このコマンドは、ジョブ番号 134543 に対し、データベース・モニタリングを開始します。 ジョブ名は DSP01 で、ユーザー QPGMR により開始されました。パフォーマンスの統計が、 ファイル名 FILE3 のメンバー名 MEMBER2 に追加されます。 20 件のレコードが蓄積された段階で、ファイルに書き込まれます。

例 3: 独立 ASP にあるライブラリーのファイルに対し、専用モニターを開始する

 STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(134543/QPGMR/DSP01) 

このコマンドは、ジョブ番号 134543 に対し、データベース・モニタリングを開始します。 ジョブ名は DSP01 で、ユーザー QPGMR により開始されました。 パフォーマンスの統計が、LIB41 ライブラリーにあるファイル名 DBMONFILE のメンバー名 DBMONFILE (OUTMBR が指定されていないため) に追加されます。 このライブラリーは複数の独立補助記憶域プール (ASP) に存在する可能性があります。オリジネーターのジョブのネーム・スペースにあるライブラリーが常に使用されます。

例 4: 「QZDA」で開始するすべてのジョブで共通モニターを開始する

  STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*ALL/*ALL/QZDA*)

このコマンドはジョブ名が「QZDA」で開始するジョブすべてに対するデータベース・モニターを開始します。 パフォーマンスの統計 (モニター・レコード) が、LIB41 ライブラリーにあるファイル DBMONFILE のメンバー DBMONFILE (OUTMBR が指定されていないため) に追加されます。 このライブラリーは複数の独立補助記憶域プール (ASP) に存在する可能性があります。オリジネーターのジョブのネーム・スペースにあるライブラリーが常に使用されます。

例 5: 共通モニターを開始し、実行に 10 秒以上時間がかかる SQL ステートメントをフィルタリングする

  STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*ALL)  RUNTHLD(10)

このコマンドは、ジョブすべてに対するデータベース・モニタリングを開始します。 ただし、それらの SQL ステートメントに対してモニター・レコードが作成されるのは、見積もり実行時間が 10 秒、または 10 秒を超える場合に限られます。

例 6: 共通モニターを開始し、200 MB を超す見積一時ストレージを持つ SQL ステートメントをフィルタリングする

  STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*ALL)  STGTHLD(200)  

このコマンドは、ジョブすべてに対するデータベース・モニタリングを開始します。 ただし、それらの SQL ステートメントに対してモニター・レコードが作成されるのは、見積一時ストレージが 200 MB、またはそれを超える場合に限られます。

例 7: 専用モニターを開始し、特定のファイルをフィルタリングする

  STRDBMON   OUTFILE(LIB41/DBMONFILE) JOB(*)
   FTRFILE(LIB41/TABLE1)

このコマンドは、現行ジョブに対するデータベース・モニタリングを開始します。 モニター・レコードは、ファイル LIB41/TABLE1 を使用する SQL ステートメントに対してのみ作成されます。

例 8: 現行ユーザーに対して専用モニターを開始する

  STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*)  FTRUSER(*CURRENT)  

このコマンドは、現行ジョブに対するデータベース・モニタリングを開始します。 モニター・レコードは、現行ユーザーによって実行される SQL ステートメントに対してのみ作成されます。

例 9: 「QZDA」で開始するジョブに対する共通モニターを開始し、実行時間とファイルをフィルタリングする

  STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*ALL/*ALL/QZDA*)
   RUNTHLD(10)  FTRUSER(DEVLPR1)  FTRFILE(LIB41/TTT*) 

このコマンドはジョブ名が「QZDA」で開始するジョブすべてに対するデータベース・モニタリングを開始します。 モニター・レコードは、以下の条件すべてを満たす SQL ステートメントに対し、作成されます。

  • Query 最適化プログラムにより算出された見積もり実行時間が 10 秒、または 10 秒を超える。
  • ユーザー「DEVLPR1」により実行された。
  • ファイル名の先頭が「TTT」で、ライブラリー LIB41 にあるファイルを使用する。

例 10: 共通モニターを開始し、IP アドレス「9.10.111.77」を持つ SQL ステートメントをフィルタリングする

  STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*ALL)
   FTRINTNETA('9.10.111.77')

このコマンドは、ジョブすべてに対するデータベース・モニタリングを開始します。 モニター・レコードは、クライアント IP バージョン 4 アドレス「9.10.111.77」を使用中の TCP/IP データベース・サーバー・ジョブに対してのみ作成されます。

例 11: 共通モニターを開始し、ポート番号 8471 の SQL ステートメントをフィルタリングする

  STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*ALL)  FTRLCLPORT(8471)

このコマンドは、ジョブすべてに対するデータベース・モニタリングを開始します。 モニター・レコードは、ローカル・ポート番号 8471 を使用中の TCP/IP データベース・サーバー・ジョブに対してのみ作成されます。

例 12: 照会管理プログラムからのフィードバックに基づいて共通モニターを開始する

  CHGSYSVAL QQRYTIMLMT(200)
   STRDBMON   OUTFILE(LIB41/DBMONFILE) JOB(*ALL) FTRQRYGOVR(*COND)

このコマンドは、照会管理プログラムへの応答に基づいて、推定実行時間が 200 秒を超えることが予期されるすべてのジョブに対してデータベース・モニターを開始します。 この例では、照会が取り消されたか、照会管理出口プログラムによって、戻りコード 2 が戻された場合にのみ、データが収集されます。 照会が照会管理プログラムの限度を超えたために発行される照会メッセージ CPA4259 へのユーザー応答によって、照会を取り消すことができます。 または、登録された照会管理出口プログラム内部のプログラム・ロジックによっても、照会を取り消すことができます。

例 13: 対話式 SQL での使用のためのデータベース・モニターの収集

STRDBMON OUTFILE(QGPL/STRSQLMON1) OUTMBR(*FIRST *REPLACE)  
   JOB(*ALL/*ALL/*ALL) TYPE(*DETAIL)                       
            FTRCLTPGM(STRSQL)              

このコマンドは、クライアント特殊レジスター・プログラム ID によるデータベース・モニターの事前フィルターを使用して、対話式 SQL (STRSQL コマンド) の使用によって実行されたすべての SQL ステートメントに対するモニター・レコードを収集します。

変更の始まり

例 14: 共通モニターを開始し、IBM i Access Client Solutions Run SQL Scripts から実行される SQL ステートメントをフィルタリングする

STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*ALL)                  
               FTRCLTAPP('IBM i Access Client Solutions - RUN SQL Scripts') 

このコマンドは、ジョブすべてに対するデータベース・モニタリングを開始します。 クライアント特殊レジスター CLIENT APPLNAME が IBM® i Access Client Solutions - RUN SQL Scripts であるステートメントについてのみ、モニター・レコードが作成されます。

変更の終わり
変更の始まり

例 15: 共通モニターを開始し、IBM System i® Access for Windows Run SQL Scripts から実行される SQL ステートメントをフィルタリングする

STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*ALL)                  
               FTRCLTPGM('cwbunnav.exe') 

このコマンドは、ジョブすべてに対するデータベース・モニタリングを開始します。 クライアント特殊レジスターCLIENT_PROGRAMIDが,CWBUNNAV.EXEである ステートメントについてのみ,モニター・レコードが作成されます。

変更の終わり
変更の始まり

例16共通モニターを開始し,クライアント・ユーザーDBMUSR1をフィルタリング

 STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*ALL)                  
               FTRCLTUSR(DBMUSR1)

このコマンドは、ジョブすべてに対するデータベース・モニタリングを開始します。 クライアント特殊レジスターCLIENT_USERIDが,DBMUSR1である ステートメントについてのみ,モニター・レコードが作成されます。

変更の終わり
変更の始まり

例17共通モニターを開始し,FTRUSERを使用してSQLステートメントをフィルタリング

STRDBMON   OUTFILE(LIB41/DBMONFILE)  JOB(*ALL)                  
               FTRUSER((STC* *NE) (S*) (TS*) (TSA* *NE))  

このコマンドは、ジョブすべてに対するデータベース・モニタリングを開始します。 ユーザー・プロファイルが,ユーザー・プロファイルNOT LIKE 'STC%' AND ユーザー・プロファイルNOT LIKE 'TSA%' AND (ユーザー・プロファイルLIKE 'S%' ORユーザー・プロファイルLIKE 'TS%')と 論理的に等値であるステートメントについてのみ,モニター・レコードが作成されます。

変更の終わり