Question & Answer
Question
db2support コマンドを使用して SQL のパフォーマンス問題を調査するために必要な資料を収集する方法を教えてください。
Answer
db2support は、クライアント・マシンまたはサーバー・マシンについての環境データを収集して、 システム・データを含むファイルを圧縮ファイル・アーカイブにまとめるコマンドです。
-sf オプションで調査対象の SQL ステートメントがひとつ入ったファイルを指定することにより、その SQL のアクセス・プランやパフォーマンス情報を一度に取得できます。また、-cl <level> オプションで、収集するパフォーマンス情報を以下のレベルで指定することが可能です。
-sf オプションで調査対象の SQL ステートメントがひとつ入ったファイルを指定することにより、その SQL のアクセス・プランやパフォーマンス情報を一度に取得できます。また、-cl <level> オプションで、収集するパフォーマンス情報を以下のレベルで指定することが可能です。
0 = カタログ、db2look、dbcfg、dbmcfg、db2set のみ収集
1 = 0 に加えて exfmt を収集
2 = 1 に加えて .db2service を収集 (これがデフォルトです)
3 = 2 に加えて db2batch を収集。3 のみ SQL が実際に実行されます
以下の手順を実行してください。
- 準備作業
パフォーマンスを測定したい SQL ステートメントを記述したファイルを用意します。- パラメーター・マーカーを使っていない SQL ステートメント
下記例のように、測定したいステートメントを含むファイルを用意してください。SQL ステートメントの最後に区切り文字としてセミコロンを追加してください。select empno,firstnme,lastname from db2inst1.employee where job='MANAGER' ;
- パラメーター・マーカーを使っている SQL ステートメント
下記例のように、測定したいステートメントを含むファイルを用意してください。SQL ステートメントの最後に区切り文字としてセミコロンを追加してください。
また、-cl 3 を指定して db2batch を収集する場合は、#PARAM ディレクティブを使用して、各パラメーター・マーカーごとに値を指定します。最初の #PARAM ディレクティブが最初のパラメーター・マーカーに対応します。
下記の例では、#BGBLK と #EOBLK で挟まれたブロックを 3 回繰り返し実行し、ブロックのそれぞれの反復では、各パラメーターごとに指定された値セットからランダムな値に選択されます。--#BGBLK 3 --#PARAM 16 18 --#PARAM 'A00' 'D11' 'E21' select firstnme,lastname from employee where edlevel > ? and workdept = ?; --#EOBLK
- パラメーター・マーカーを使っていない SQL ステートメント
- db2support コマンドの実行
- インスタンス・オーナーで、データベース・サーバーにログインします。
(複数パーティション・データベースの場合はカタログ・ノードのあるサーバーにログインします。) - コマンド行プロセッサーから以下のコマンドを実行して資料を取得します。
db2support <outputdir> -d <dbname> -sf <sql file> -cl <level> -localhost
<dbname> は対象のデータベース名に置き換えて下さい。
<sql file> は「1.準備作業」で用意した SQL ステートメントを記述したファイル名に置き換えてください。
<level> は収集するパフォーマンス情報に応じて 0 から 3 の数字に置き換えてください。
-localhost は複数パーティション・データベース (DPF) で必ず指定してください。
上記を実行すると db2support.zip ファイル内に db2supp_opt.zip というファイルが含まれるようになります。
db2supp_opt.zip を展開すると、パフォーマンス情報の書き出された各種ファイルが OPTIMIZER ディレクトリー内に格納されています。
- インスタンス・オーナーで、データベース・サーバーにログインします。
- SQL ステートメント内で表などのオブジェクトが完全修飾されていない場合に SQL0204N でデータ収集に失敗するケースがあります。
その場合は -cs オプションでスキーマ名を指定してコマンドを実行してください。
詳細は以下の情報をご確認ください。
[Db2] db2support -sf でパフォーマンス情報を収集する際に SQL0204N で失敗する - 下記のバージョン, Fix Pack レベルにて db2support を -cl 2 もしくは 3 で実行した際に稀にインスタンスがクラッシュしてしまうという既知の障害があります。
・v9.1 FP 10 以下 IC76056
・v9.5 FP 7 以下 IC76074
・v9.7 FP4 以下 IC76075
いずれも上位 Fix Pack にて修正済みですが、該当の Fix Pack レベルをご使用されている場合はご注意ください。 - Db2 V11.1 Mod 3 Fix Pack 3 では、以下の既知の障害がございますので、出力先のディレクトリーにご注意ください。[Db2] Db2 V11.1 Mod 3 Fix Pack 3 環境で db2support コマンドを実行するとデータベース破損や Db2 インスタンスの停止を引き起こすことがある
- Db2 11.1 および 11.5 で SQL にある特徴がある場合、db2exfmt がループして巨大な結果を生成します。
IT31325: DB2EXFMT MAY HANG WITH SQL LONGER THAN 4096 AND COMMA OCCURS AT POSITION 4096 IN THE FORMATTED ORIGINAL STATEMENT
この条件にあてはまる場合、SQL ステートメントを調整してコンマの位置をずらす必要があります。
運用上の考慮点
- -cl 3 を指定すると SQL ステートメントは実際に実行されるため、大規模な照会や更新処理を含む場合は負荷やデータの反映等をあらかじめご考慮ください。また、SQL が完了しない場合は、このオプションは指定しないようにしてください。
- -cl 3 で db2batch を取得する場合は、同時に他の処理が実行されていると有効なデータが取得できない可能性があるため、出来る限り db2support のみ単独で実行するようにしてください。
- アクセス・プラン情報を取得する際に、SQL にホスト変数が使用されている場合は値を ? に変えてください。
- db2batch が正確にとれているか確認する場合は、db2supp_opt.zip を展開し、OPTIMIZER ディレクトリー配下の ファイル db2batch_out.opt_out をお確かめください。
- アクセス・プラン情報が正確にとれているか確認する場合は、db2supp_opt.zip を展開し、OPTIMIZER ディレクトリー配下のファイル exfmt_badquery.opt_out をお確かめください。
関連情報
db2support - 問題分析および環境収集ツール・コマンド
db2batch - ベンチマーク・ツール・コマンド
db2exfmt - Explain 表フォーマット・コマンド
[DB2 LUW] パスポート・アドバンテージによく寄せられる質問
Choosing options for collecting optimizer db2support data
お問い合わせ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PliAAE","label":"DB2 Tools-\u003Edb2support"},{"code":"a8m500000008PkqAAE","label":"Performance"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
15 August 2023
UID
swg22004496