ユーザー定義 SQL リポジトリーからの SQL ステートメントのオフロードの例

IBM 以外の照会モニター・アプリケーションによって DB2® for z/OS® の表にオフロードされたデータから SQL ステートメントをキャプチャーすることができます。このタスクを実行するには、オフロードされたデータが入る DB2 for z/OS の表内の列に、データのカテゴリーをマップする必要があります。
最初のセクションでは、これらのデータのカテゴリーと、各カテゴリーで使用するデータ・タイプを示します。2 番目のセクションでは、そのようなデータから SQL ステートメントをキャプチャーするための要件の例を示します。

DB2 列にマップするデータのカテゴリー

DB2 表内の列には、SQL ステートメント、そのランタイム・メトリック、およびステートメントが実行された時間間隔に関する以下の情報を含める必要があります。

DB2 サブシステム
ランタイム・メトリックおよび SQL ステートメントが収集された DB2 サブシステム。(データ・タイプ: SQL CHAR または VARCHAR)
プラン名
DB2 プランの名前。(データ・タイプ: SQL CHAR または VARCHAR)
コレクション
DB2 プランまたはパッケージ・コレクションの ID。(データ・タイプ: SQL CHAR または VARCHAR)
パッケージ名
DB2 パッケージの名前。 (データ・タイプ: SQL CHAR または VARCHAR)
パッケージ整合性トークン
DBRM または DB2 パッケージの整合性トークン。 (データ・タイプ: SQL CHAR または BINARY)
1 次許可 ID
ステートメントの実行に使用された 1 次許可 ID。(データ・タイプ: SQL CHAR または VARCHAR)
ステートメント・テキスト
SQL ステートメントのテキスト。ステートメント全体またはそのフラグメント。(データ・タイプ: SQL CHAR、VARCHAR、または BINARY)

このテキストは、複数のセグメントに分割されて、別の行に配置されていることがあります。ユニーク・ステートメント ID と順序番号により、セグメントは正しく連結されます。

照会モニター・アプリケーションは、静的 SQL ステートメントを SYSIBM.SYSPACKSTMT カタログ表の STMT 列にオフロードできます。この表には、SQL テキストが BINARY 形式で格納されます。ご使用のアプリケーションが静的 SQL ステートメントをこの表にオフロードする場合、HEX() 関数を使用して、ステートメントを BINARY 形式から 16 進ストリングに変換する必要があります。この変換は、ランタイム・メトリックおよびメトリックが収集された時間間隔に関する情報を示す表とこの列を結合するために定義する、ビュー内で行います。
ユニーク・ステートメント ID
ステートメントに固有の ID。これは、表の別の行にあるステートメント・テキストのフラグメントを識別するために使用されます。(データ・タイプ: SQL CHAR、VARCHAR、または BINARY)
ステートメント順序番号
ステートメントの 1 つのセグメントを、そのステートメントの他のセグメントと連結する順序を記述する番号。 (データ・タイプ: SQL INT または SMALLINT)
間隔の開始
ランタイム・メトリックが収集された間隔の開始。 (データ・タイプ: SQL TIMESTAMP)
間隔の終了
ランタイム・メトリックが収集された間隔の終了。 (データ・タイプ: SQL TIMESTAMP)
セクション番号
SQL ステートメントが配置されている、DB2 パッケージ内のセクションの番号。(データ・タイプ: SQL INT または SMALLINT)
ステートメント番号
DB2 パッケージ内のステートメントの番号。 (データ・タイプ: SQL INT または SMALLINT)
実行カウント
SQL ステートメントが実行された回数。(データ・タイプ: SQL INT または SMALLINT)
合計 CPU 時間
ステートメントを、実行カウントに指定された回数だけ実行するために要した CPU 時間。(データ・タイプ: SQL FLOAT または DOUBLE)
経過時間の合計
ステートメントを、実行カウントに指定された回数だけ実行するために要したクラス 2 時間の量。 (データ・タイプ: SQL FLOAT または DOUBLE)
ページ取得の数
出されたページ取得要求の数。(データ・タイプ: SQL INT または SMALLINT)
ユニーク・メトリック ID
SQL ステートメント用に収集されたランタイム・メトリックに固有の ID。これは、ランタイム・メトリックの表を、リポジトリー内の SQL ステートメントが参照するオブジェクトをリストした表に結合するために使用されます。(データ・タイプ: SQL CHAR、VARCHAR、または BINARY)

SQL ステートメントが参照するデータベース・オブジェクトに関する情報を入れる列も指定できます (表にこの情報が表に含まれている場合)。

従属オブジェクト修飾子
参照されたオブジェクトの修飾子またはスキーマ。(データ・タイプ: SQL CHAR または VARCHAR)
従属オブジェクト名
参照されたオブジェクトの名前。(データ・タイプ: SQL CHAR または VARCHAR)
従属オブジェクト・タイプ
参照されたオブジェクトのタイプ。(データ・タイプ: SQL CHAR または VARCHAR)
データベース名
参照されたオブジェクトが格納されているデータベースの名前。 (データ・タイプ: SQL CHAR または VARCHAR)
表スペース名
参照されたオブジェクトが格納されている表スペースの名前。 (データ・タイプ: SQL CHAR または VARCHAR)
ユニーク・メトリック ID
SQL ステートメント用に収集されたランタイム・メトリックに固有の ID。これは、ランタイム・メトリックの表を、リポジトリー内の SQL ステートメントが参照するオブジェクトをリストした表に結合するために使用されます。(データ・タイプ: SQL CHAR、VARCHAR、または BINARY)

照会アプリケーションによって作成された DB2 for z/OS 表から SQL ステートメントをキャプチャーする例

この例では、IBM® DB2 Query Monitor for z/OS を使用します。これは IBM 以外の照会モニター・アプリケーションと同様に、DB2 for z/OS 表にデータをオフロードすることができます。ただし、最適な結果を得るためには、ワークフロー・アシスタントの「キャプチャー」セクションの「DB2 Query Monitor for z/OS からの SQL のキャプチャー」ページを使用して、DB2 Query Monitor for z/OS から SQL ステートメントをキャプチャーしてください。

DB2 Query Monitor for z/OS を使用して、VSAM ファイルから DB2 for z/OS の表にデータをオフロードすると仮定します。その後、これらの表を照会して、さまざまなデータベース・アプリケーション内の SQL ステートメントのパフォーマンスに関する情報を見つけたいと思います。いずれかの SQL ステートメントがパフォーマンスのしきい値より低い場合、それらのステートメントをチューニングするのが目的です。

このリポジトリーのデータから SQL ステートメントをキャプチャーしてチューニングするには、ランタイム・メトリック、SQL テキスト、および時間間隔に関する情報をオフロードする必要があります。

このデータは、照会のチューニングに必要であり、以下の利点が得られます。

以下の 3 つの表にデータをオフロードする必要があります。

CQMnnINTERVALS
この表は、各間隔の開始時刻と終了時刻を定義します。
CQMnnSUMM_METRICS
この表には、DB2 Query Monitor for z/OS が SQL ステートメントごとに収集するランタイム・メトリックが入ります。
CQMnnSUMM_TEXT
この表には、SQL ステートメントのテキストが入ります。
注: 照会モニター・アプリケーションは、静的 SQL ステートメントのテキストを、SYSIBM.SYSPACKSTMT カタログ表の STMT 列にオフロードできます。

ワークフロー・アシスタントを使用して SQL ステートメントをキャプチャーする前に、この 3 つの表を結合するビューを作成しておく必要があります。以下に例を示します。

CREATE VIEW QM_STMT_VIEW 
  (DB2_SUBSYSTEM, PLAN, COLLECTION, PROGRAM,
   CONSISTENCY_TOKEN, AUTHID, METRICS_TOKEN, TEXT_TOKEN, SQLTEXT, SEQNO,
   INTERVAL_START, INTERVAL_END, SECTION, STMT, SQL_CALLS, DB2_CPU,
   DB2_ELAP, GETPAGES) 
AS
SELECT A.DB2_SUBSYSTEM, A.PLAN, A.COLLECTION, A.PROGRAM, 
   A.CONSISTENCY_TOKEN, A.AUTHID, A.METRICS_TOKEN, A.TEXT_TOKEN, 
   B.SQLTEXT, 0, A.INTERVAL_START, CURRENT TIMESTAMP AS INTERVAL_END_TS, 
   A.SECTION, A.STMT, A.SQL_CALLS, A.DB2_CPU, A.DB2_ELAPSED, A.GETPAGES
FROM QMTOOLS.CQM23_SUMM_METRICS A,  
     QMTOOLS.CQM23_SUMM_TEXT B
WHERE 
   A.TEXT_TOKEN = B.TEXT_TOKEN
   AND A.SMFID = B.SMFID
   AND A.CQM_SUBSYSTEM = B.CQM_SUBSYSTEM    
   AND A.INTERVAL_NUMBER = B.INTERVAL_NUMBER
   AND A.INTERVAL_START = B.INTERVAL_START  
   AND A.INTERVAL_NUMBER IN (       
      SELECT DISTINCT A.INTERVAL_NUMBER
      FROM QMTOOLS.CQM23_INTERVALS A,           
           QMTOOLS.CQM23_SUMM_METRICS B        
      WHERE A.SMFID = B.SMFID
         AND A.CQM_SUBSYSTEM = B.CQM_SUBSYSTEM           
         AND A.INTERVAL_NUMBER = B.INTERVAL_NUMBER               
         AND A.INTERVAL_START = B.INTERVAL_START);

照会モニター・アプリケーションが静的 SQL ステートメントのテキストを SYSIBM.SYSPACKSTMT カタログ表の STMT 列にオフロードする場合、ビューはこの列を CQMnnINTERVALS 表および CQMnnSUMM_METRICS 表と結合する必要があります。また、ビューは、HEX() 関数を使用して、各ステートメントのテキストを BINARY 形式から 16 進ストリングに変換することも必要です。

SQL ステートメントが参照するデータベース・オブジェクトに関するデータをオフロードすることもできます。そのデータは SUMM_OBJECTS 表にオフロードする必要があります。


フィードバック