11.1.2 クライアントエラーログ機能
クライアントとHiRDBサーバ間の通信処理中,又はX/Openで規定したXAインタフェースでエラーが発生した場合,エラー情報をクライアントエラーログとしてクライアントエラーログファイルに取得します。
クライアントエラーログファイルは,取得した情報で満杯になると,最も古い情報から順次新しい情報に書き替えられます。
(1) クライアントエラーログ情報の取得方法
クライアントエラーログは,クライアント環境定義のPDCLTPATH及びPDUAPERLOGに値を設定することで取得できます。各クライアント環境定義については,「クライアント環境定義(環境変数の設定)」を参照してください。
クライアント環境定義で指定した出力先ディレクトリが存在しない,又は書き込み権限がない場合,カレントディレクトリに出力をします。カレントディレクトリにも書き込み権限がない場合は,出力しません。
情報を取得するクライアントエラーログファイルは,指定したディレクトリに二つ作成されます。作成されるファイルは,X/Openに従ったAPI(TX_関数)の使用の有無によって異なります。
X/Openに従ったAPI(TX_関数)の使用の有無と作成されるクライアントエラーログファイルの関係を次の表に示します。
TX_関数の使用 |
作成されるクライアントエラーログファイル |
---|---|
なし |
pderr1.trc,及びpderr2.trc |
あり |
pderr×××××-1.trc,及びpderr×××××-2.trc |
(2) クライアントエラーログ情報の見方
クライアントエラーログは,SQL文実行時,通信処理時,又はX/Openで規定したXAインタフェース関数実行時でエラーが発生したときに出力されます。
出力されるクライアントエラーログの例とその説明を次に示します。
- [出力例]
[説明]
-
クライアントエラーログ先頭識別子
SQL実行でエラーが発生した場合には'>>'を,それ以外のエラーの場合には'>'を表示します。
-
UAPのプロセス番号
エラーが発生したUAPのプロセス番号を表示します。
なお,正しいプロセス番号が取得できない場合,不正な数値が表示される場合があります(Windows版の場合)。
-
UAPのスレッド番号
エラーが発生したUAPがマルチスレッドで動作している場合にUAPのスレッド番号を表示します。マルチスレッドで動作していない場合は0を表示します。正しいスレッド番号が取得できず,不正な数値が表示される場合があります。
-
サーバのプロセス番号
接続しているサーバのプロセス番号を表示します。
-
クライアントエラーログカウンタ
クライアントエラーログを受け付けるごとに順次カウントして表示します。
0から65535までカウントできます。
-
エラー取得日時
クライアントエラーログを取得した日時をYYYY/MM/DD HH:MM:SSの形式で表示します。
-
ログデータ
障害情報(エラーメッセージ)を表示します。
-
SQLCODE
クライアントエラーログがUAPに返すSQLCODEに対応している場合に,そのSQLCODEを表示します。
-
SQLカウンタ
エラーが発生したSQL文のSQLカウンタを表示します。SQLカウンタが6けたの場合,上5けたを表示します。SQLカウンタの詳細については,「SQLトレース機能」の出力例の説明を参照してください。
-
エラー取得時間
クライアントエラーログを取得した時間をミリ秒単位で表示します。
-
エラー検出箇所
エラーを検出したソースファイルの名前と行番号を表示します。
-
オペレーションコード
エラーが発生したSQL文のオペレーションコードを表示します。
(3) クライアントエラーログファイルのバックアップの取得
クライアントエラーログ情報を出力中にクライアントエラーログファイルの容量が一杯になると,HiRDBはそのファイルへ出力しないで,もう一方のクライアントエラーログファイルにクライアントエラーログ情報を出力します。このとき,切り替え先のクライアントエラーログファイルに格納されている古いクライアントエラーログ情報から順に消去され,新しいクライアントエラーログ情報に書き換えられます。このため,必要な情報はUAP終了時にクライアントエラーログファイルの内容をコピーしてバックアップを取得しておいてください。
なお,現在使用しているクライアントエラーログファイルを知りたい場合は,ファイルの最終更新日時を調べてください。最終更新日時の新しい方が現在使用しているクライアントエラーログファイルになります。
HiRDBクライアントがWindows版の場合はdirコマンド又はエクスプローラで,ファイルの最終更新日時を調べてください。
HiRDBクライアントがUNIX版の場合はOSのls -lコマンドで,ファイルの最終更新日時を調べてください。