IBM 以外の照会モニター・アプリケーションによって DB2® for z/OS® の表にオフロードされたデータ内にある SQL ステートメントから照会ワークロードを作成することができます。このタスクを実行するには、オフロードされたデータが入る DB2 for z/OS の表内の列に、データのカテゴリーをマップする必要があります。このトピックでは、そのようなデータから SQL ステートメントをキャプチャーするための要件の例も示します。
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 ステートメントから照会ワークロードを作成する例
DB2 Query Monitor for z/OS を使用して、VSAM ファイルから DB2 for z/OS の表にデータをオフロードすると仮定します。その後、これらの表を照会して、さまざまなデータベース・アプリケーション内の SQL ステートメントのパフォーマンスに関する情報を見つけたいと思います。いずれかの SQL ステートメントがパフォーマンスのしきい値より低い場合、それらのステートメントをチューニングするのが目的です。
このリポジトリーのデータから 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 表にオフロードする必要があります。
データがオフロードされ、ビューが作成された後、ユーザー定義 SQL リポジトリーからの照会ワークロードの作成の例にリストされている手順に従います。