DB2 トレース機能 (db2trc コマンド) を使用すると、 イベントのトレース、ファイルへのトレース・データのダンプ、 および可読形式へのデータのフォーマットを行うことができます。 db2diag.log の情報では問題を診断するのに不十分な場合、 DB2 カスタマー・サポートからトレースを取るよう依頼されることがあります。
DB2 トレース情報はメモリーまたはディスクに保管されています。 収集時には、情報は年代順に記録されます。
トレースで収集された情報の量は、またたく間に大きくなります。 したがって、エラー状態だけを取り込み、他の活動 (たとえば、 db2start でのデータベース管理プログラム・インスタンスの開始、db2 CONNECT を使用したデータベースへの接続など) は無視するとよいでしょう。 トレースを行う際に、最小の 再生可能なシナリオを複製して取り込み、 将来行う分析で使用できるようにしておいてください。
トレースを行うプロセスは、DB2 インスタンスの動作全般に影響を与えます。 パフォーマンス低下の程度は、問題の種類およびトレース情報の収集に使用されたリソースの数によります。
プラットフォームによって、トレースを行う方法がいくつかあります。 たとえば、UNIX ベースのシステムでは、db2trc コマンドを使用しなければなりません。
始める前に
DB2 トレース機能を使用する前に、以下の点を考慮してください。
トレース機能 (db2trc) コマンドの使用
DB2 トレース機能のトレースは、db2trc on コマンドで活動化されます。 このコマンドにはさまざまなパラメーターがあり、 収集するデータの量やタイプを制御することができます。
db2trc コマンドの構文は、 以下に示してあります。 その後に、パラメーターの説明があります。
>>- db2trc--+--------------------------------------------------------+-> | .-----------------------------------------------. | | V | | +- on-----+-----------------------------------------+--+-+ | | .-.------------------------------. | | | | V | | | | +- -m----+- *------------------------+--+-+ | | | | .-,--------------------. | | | | | | V | | | | | | '------ num--+-------+----+-' | | | | '- -num-' | | | +- -e-- max_sys_errors--------------------+ | | +- -r-- max_record_size-------------------+ | | +- -f-- filename--------------------------+ | | +-+- -l--+---------------+-+--------------+ | | | | '- buffer_size--' | | | | | '- -i--+---------------+-' | | | | '- buffer_size--' | | | '- -t-------------------------------------' | +- off---------------------------------------------------+ +- dump-- filename---------------------------------------+ +- flw-- dump_file-- output_file-------------------------+ '- fmt-- dump_file-- output_file-------------------------' >--------------------------------------------------------------><
パラメーター
トレースをオンにし、ダンプ・ファイルを生成し、ダンプ・ファイルをフォーマットし、 そしてトレースをオフにするために、db2trc コマンドを数回発行しなければなりません。 次のリストには、パラメーターを使用する順に示してあります。
db2trc dump db2trc.dmp
ファイル名は、このパラメーターで指定する必要があります。 明示的にパスを指定しない限り、このファイルは現行ディレクトリーに保管されます。
db2trc off
db2trc flw db2trc.dmp db2trc.flw db2trc fmt db2trc.dmp db2trc.fmt
これらのオプションは、トレースを検査するために使用します。 これらのファイルも、DB2 カスタマー・サービスおよびサポートに送付することが必要な場合があります。
トレース機能を開始するには、db2trc on と入力します。 トレース・オプションのデフォルト値には、次のようなものがあります。
トレースを調整するためにオプションを指定するよう指示されることがあります。 次のオプションは、DB2 カスタマー・サポートから指示された場合にだけ使用してください。
DB2 カスタマー・サポートがデフォルト値ではない値を要求する場合、 使用する値が指示されます。
これらのオプションのいずれかを使用して、 バッファー・サイズを指定します。
トレース情報は、エラーの診断に役立つ場合もあり、役立たない場合もあります。 たとえば、次のような状態ではエラー条件を取り込みません。
トレース・ファイルが読み取り可能であることを検査するには、 バイナリー・トレース・ファイルをフォーマットしてフロー制御を表示し、 フォーマット済みの出力をヌル装置に送信します。 このタスクを処理するコマンドの例を次に示します。
db2trc flw example.trc nul
このコマンドの出力は、ファイルを読み取る問題があるかどうか、 またトレースが折り返されたかどうかを明示的に表示します。
次の例は、db2trc の使用方法を示すためのシナリオです。
望ましいトレースの方法は、このメモリーを使用したトレースです。 この例では、トレース・バッファー・サイズは 4 MB に指定されています。
db2trc on -l 4000000 -e -1
db2trc dump db2trc.dmp
(問題が発生した直後にトレースをダンプしてください。 そうしないと、エラーの後で起きる SQL エラーが取り込まれ、 重要な情報が失われてしまいます。)
db2trc off
ファイルを使用したトレースは、再作成される問題がワークステーションを停止して、 トレースをファイルにダンプできない場合に役立ちます。 ファイルを使用してトレースする場合、各トレース項目は入力されるたびにディスクに書き込まれます。 ファイル内の情報は、中断まで (中断そのものは含まない) のイベントを取り込みます。
この例では、ファイル・サイズは 4 MB に、 そしてファイル名は db2trc.dmp に指定されています。
db2trc on -l 4000000 -e -1 -f db2trc.dmp
ワークステーションをリブートすると、db2trc.dmp ファイルが存在するようになります。 そのファイルには、システム破損の原因となったイベントまでの種々のイベントが含まれています。
問題: クライアントからデータベースに接続しようとしているときに、SQL1042C エラー・メッセージを受け取ります。 データベースへのアクセスができません。
解決手順: 問題の解決方法を探すには、まず、エラーが起きている場所を探します。 エラーはクライアントで生じていますから、まずクライアントでエラーを探すことから始めます。 そのために、クライアント・マシンの db2diag.log を見ます。 詳細については、db2diag.log の解釈を参照してください。
クライアントの db2diag.log に、項目が含まれていないとします。 DB2 サーバー・マシンの db2diag.log を見て、サーバーでエラーが生じているかどうかを調べます。
サーバーの db2diag.log に次のような項目があったとします。
1997-03-16-08:54:37.001160 Instance:payroll Node:000 PID:74467(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 buffer_pool_services sqlbStartPools Probe:0 Database:SAMPLE Starting the database. (1) 1997-03-16-08:54:38.001160 Instance:payroll Node:000 PID:74467(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpresr Probe:0 Database:SAMPLE Crash Recovery has been initiated. (2) 1997-03-16-08:54:38.001160 Instance:payroll Node:000 PID:74467(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpresr Probe:0 Database:SAMPLE Low transaction lsn: 0000 005d c00c 1997-03-16-08:54:38.001160 Instance:payroll Node:000 PID:74467(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpresr Probe:0 Database:SAMPLE Minimum buffer lsn: 0000 005d c00c 1997-03-16-08:54:38.001160 Instance:payroll Node:000 PID:74467(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_management (5) sqldmund Probe:375 Database:SAMPLE Error during undo. (3) 0ae6 ffff 0ae6 ffff 0000 005e efa2 6363 (4) |
解釈:
解決手順: 残念ながら、db2diag.log にはどのファイルが欠落しているかを判別するのに役立つ情報が含まれていませんでした。 エラー条件のトレースを行い、トレース・ファイルの E60A エラー・コードを走査しなければなりません。
トレース・ファイルが次のようなものだとします。
3478 DB2 non-fatal_err oper_system_services sqloopenp (1.4.15.140) pid 55; tid 38; cpid 112; time 365535; trace_point 6 433a 5c44 4232 5c53 514c 3030 3030 315c /DB2/SQL00001/ 5351 4c54 3030 3032 2e30 5c53 514c 3030 SQLT0002.0/SQL00 3031 302e 4441 54 010.DAT (2) 3479 DB2 cei_data oper_system_services sqloopenp (1.25.15.140) pid 55; tid 38; cpid 112; time 365535; trace_point 7 ffff ffff 3480 DB2 cei_errcode oper_system_services sqloopenp (1.6.15.140) pid 55; tid 38; cpid 112; time 365535; trace_point 254 return_code = 0xffffe60a (1) = -6646 = SQLO_FNEX |
解釈:
解決策: 良い状態にあるバックアップから復元し、ログの終わりまでロールフォワードして、 データが失われていないことを確認します。