db2diag.log ファイルは DB2 がログに記録した情報を含む ASCII ファイルです。 このファイルは、DIAGPATH データベース管理プログラム構成パラメーターによって指定されたディレクトリーにあります。 テキスト・エディターを使用して、 問題が生じたと思われるマシンのファイルを表示します。
db2diag.log の情報には次のものが含まれています。
db2diag.log の項目には 2 つのタイプがあります。
データベースが正常に動作している場合、 このタイプの情報は重要ではないので、無視して構いません。
注:
db2diag.log 項目のサンプルのヘッダー情報の例を次に示します。
2000-03-06-11.53.18.001160 (1) Instance:payroll (2) Node:000 (3) PID:44829(db2agent (SAMPLE))(4) TID:352(5) Appid:*LOCAL.payroll.000306140834(6) lock_manager (7) sqlplrq (8) Probe:111 (9) Database:SAMPLE (10) DIA9999E (11) An internal return code occurred. Report the following: "0xFFFFE10E". (12) |
凡例:
注: アプリケーションが DUOW 環境で実行されている場合、 表示されている ID は DUOW 相関トークンです。
特定のアプリケーション ID についてさらに識別したい場合、 次のいずれかを行います。
関数が実行する活動の種類について詳しく知るためには、 名前の 4 番目の文字を見ます。 この例では、関数 "sqlplrq" の文字 "p" は、 データ保護の問題であることを表します (たとえば、ログの損傷など)。
次のリストに、関数名の 4 番目に使用される文字、 およびその文字によって表される活動の種類を示します。
重大エラーの場合、SQLCA 構造は db2diag.log にダンプされます。 各 SQLCA フィールドの詳細については、付録 B, SQL 連絡域 (SQLCA) を参照してください。
SQLCA ダンプがある db2diag.log の例を次に示します。
1997-03-16-11.53.18.001160 Instance:payroll Node:000 PID:44829(db2agent (SAMPLE)) Appid:*LOCAL.payroll.970317140834 relation_data_serv sqlrerlg Probe:17 Database:SAMPLE DIA9999E An internal return code occurred. Report the following : "0xFFFFE101". Data Title :SQLCA pid(14358) (1) sqlcaid : SQLCA sqlcabc: 136 sqlcode: -980 (2) sqlerrml: 0 sqlerrmc: (3) sqlerrp : sqlrita sqlerrd (4): (1) 0xFFFFE101 (5) (2) 0x00000000 (3) 0x00000000 (4) 0x00000000 (5) 0x00000000 (6) 0x00000000 sqlwarn : (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) sqlstate: |
凡例:
OS/2 および Windows システムでは、db2diag.log、または SQLCA エラー・コードのバイトが逆転しているものがあります。 形式が ffff nnnn の場合、そのまま解釈されます。 形式が nnnn ffff の場合、意味を読み取るためには、 バイトを逆転しなければなりません。
そのためには、最初の 4 文字を最後の 4 文字と入れ替え、 次に、5 番目と 6 番目の文字を、7 番目と 8 番目の文字と入れ替えます。
たとえば、エラー・コード "0ae6 ffff" は "ffff e60a" と変換されます。
エラー・コードが意味のある形式になっている場合、次のようにします。
次の例は、db2diag.log を使用してどのように問題を診断できるかを示しています。
問題: クライアント・アプリケーションがデータベース SAMPLE に対して実行されています。 実行中に、アプリケーションが必ず異常終了します。
解決手順: 問題の解決方法を探すには、まず、エラーが起きている場所を探します。 エラーはクライアントで生じていますから、まずクライアントでエラーを探すことから始めます。 そのために、クライアント・マシンの db2diag.log を見ます。
クライアントの db2diag.log に、項目が含まれていないとします。 DB2 サーバー・マシンの db2diag.log を見て、サーバーでエラーが生じているかどうかを調べます。
サーバーの db2diag.log に次のような項目があったとします。
1997-03-16-20.52.27.001160 Instance:payroll Node:000 PID:44829(db2sysc (SAMPLE)) Appid:*LOCAL.payroll.970317140834 buffer_pool_services sqlbStartPools Probe:0 Database:SAMPLE Starting the database. (1) 1997-03-16-20.52.42.001160 Instance:payroll Node:000 PID:44829(db2sysc (SAMPLE)) Appid:*LOCAL.payroll.970317140834 buffer_pool_services sqlbcres Probe:1100 Database:SAMPLE DIA3726C A invalid page checksum was found for page "". (2) ZRC=FFFFE119 (3) 1997-03-16-20.52.42.001160 Instance:payroll Node:000 PID:44829(db2sysc (SAMPLE)) Appid:*LOCAL.payroll.970317140834 buffer_pool_services sqlbcres Probe:1100 Database:SAMPLE Obj={pool:2;obj:10;type:0} State=x27 (4) Data Title :SQLB_OBJECT_DESC pid(104) tid(109) 0200 0a00 0200 0a00 0000 0000 0000 0000 ................ 0000 002e e00c 0000 0000 0000 0000 0000 ................ 0000 0000 0100 0000 2700 0000 0000 0000 ................ 0000 0000 0000 0000 ........ Dump File : C:\SQLLIB\DB2\104109.dmp Data : SQLB_PAGE |
解釈:
解決方法: データベースを復元およびロールフォワードします。 これらができない場合、DB2 カスタマー・サポートに連絡します。
注: この例の場合、クライアントのマシンでのみ生じたエラーおよび症状の原因が、DB2 サーバー・マシンで生じたエラーであることを示しています。
問題: DB2 クライアント・アプリケーションを SAMPLE データベースに接続すると、 クライアント・アプリケーションは SQL1042C エラー・メッセージを受け取ります。
解決手順: 問題の解決方法を探すには、まず、エラーが起きている場所を探します。 エラーはクライアントで生じていますから、 クライアントのマシンの db2diag.log を見ることから始めます。
クライアントの db2diag.log に、項目が含まれていないとします。 DB2 サーバー・マシンの db2diag.log を見て、サーバーでエラーが生じているかどうかを調べます。
サーバーの db2diag.log に次のような項目があったとします。
1997-03-16-08.59.34.001160 Instance:payroll Node:000 PID:55543(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 buffer_pool_services sqlbStartPools Probe:0 Database:SAMPLE Starting the database. (1) 1997-03-16-08.59.35.001160 Instance:payroll Node:000 PID:55543(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpresr Probe:0 Database:SAMPLE Crash Recovery has been initiated. (2) 1997-03-16-08.59.35.001160 Instance:payroll Node:000 PID:55543(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpgole Probe:30 Database:SAMPLE A problem occurred while verifying a database log file S0000000.LOG RC=0ae6 ffff (3) 1997-03-16-08.59.35.001160 Instance:payroll Node:000 PID:55543(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpgilt Probe:101 Database:SAMPLE DiagData 0ae6 ffff 1997-03-16-08.59.36.001160 Instance:payroll Node:000 PID:55543(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpgilt Probe:60 Database:SAMPLE DiagData 0ae6 ffff 1997-03-16-08.59.36.001160 Instance:payroll Node:000 PID:55543(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpgasn Probe:915 Database:SAMPLE Marked the database log as bad. 0000 0000 (4) |
解釈:
エラー・コードの形式は ffff nnnn でなければなりません。 しかし、OS/2 および Windows アーキテクチャーでは、整数のバイトを逆転します。 この例のエラー・コードの形式は nnnn ffff なので、 意味を読み取るためには、バイトを逆転しなければなりません。 詳細については、16 進コードの解釈を参照してください。
この例のエラー・コードは、ffff e60a に変換されます。 10 進形式 (-6646) に変換されるとこの SQL コードは無効になり、SQL コードではなく戻りコードになります。 付録 A, DB2 内部戻りコードで戻りコード E60A を調べると、 ファイルが存在していないことが分かります。
データベースの再始動および回復には、 データベースが停止した時に使用中だったすべてのログ・ファイルが必要となります。 この db2diag.log 項目は、 ログ・ファイル S0000000.LOG が予期していたロケーションに見つからないことを示しています。 再始動および回復処理を続けることができません。
解決方法: この問題を解決する最もよい方法は、バックアップから復元することです。 ログ・ファイルは S0000000.LOG (S0001005.LOG またはその他の値ではなく) ですので、 データベースのログ保存は使用可能となっていないか、新規です。 したがって、バックアップから復元するのが回復の唯一の方法です。
問題: データベース接続時に、SQL1004C メッセージを受け取りました。 このメッセージは、ファイル・システムの記憶域が足りないことを示しています。 どのファイル・システムが問題かをどのように判別できるでしょうか。
解決手順: まず、エラー・メッセージのテキスト自体を調べます。 (db2 ? sql1004c を発行するか、 メッセージ解説書 で受け取ったエラーについて調べます。) このメッセージは、コマンドをプロセスするにはファイル・システムの記憶域が不十分であることを示します。
次に、db2diag.log を調べて、どのファイル・システムがいっぱいかを正確に検索し、 追加情報があるかどうかをチェックします。
サーバーの db2diag.log に次のような項目があったとします。
1997-03-16-08.40.42.001160 Instance:payroll Node:000 PID:66847(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpgifl Probe:105 Database:SAMPLE DiagData 0cd6 ffff (1) 1997-03-16-08.40.43.001160 Instance:payroll Node:000 PID:66847(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpgifl (2) Probe:540 Database:SAMPLE 0cd6 ffff 1997-03-16-08.42.55.001160 Instance:payroll Node:000 PID:66847(db2syscs (SAMPLE)) Appid:*LOCAL.payroll.970317140834 data_protection sqlpgifl Probe:105 Database:SAMPLE DiagData 0cd6 ffff |
解釈:
解決方法:
(logprimary * (logfilsiz * 4096) + 8192
から
((logprimary + logsecond) * (logfilsiz + 2) * 4096) + 8192
この計算結果は、ログ保存が使用不可となっているものと想定した場合に、 ログのために必要なスペースの範囲を示します。
ログ保存が使用可能になっている場合、ユーザー出口が使用可能になっていないと、 ログはどんどん大きくなります。 ログ保存を使用する場合、ログ・パスにできるだけ多くの使用可能なスペースがあるようにしてください。
db2diag.log に問題を解決するのに必要な情報が含まれていない場合、 トレースを実行する必要があります。 詳細については、db2diag.log および DB2 トレースの使用例を参照してください。