10.11.7 SQLトレース情報を使用したSQL文のエラー原因調査
(1) SQL文のエラー原因調査の手順
SQLトレース情報を使用したSQL文のエラー原因調査の手順を次に示します。
手順
-
SQL文の実行情報に出力されているSQLCODEを確認する
SQLCODEがsqlcode欄に出力されます。負の値になっているSQLCODEを確認してください。
(例)
-
出力されたSQLCODEに対応するメッセージを確認する
SQLCODEとメッセージの対応付けの方法については,マニュアルHADB メッセージのSQLCODEの見方を参照してください。
この例の場合,SQLCODEが-559となっています。そのため,対応するメッセージは,KFAA30559-Eメッセージとなります。
-
message_log_infoに出力されたメッセージログ情報を記録する
(例)
-
メッセージログファイルに出力されているメッセージを検索する
メッセージログファイルに出力されている手順2.で確認したメッセージを検索してください。この例の場合,メッセージログファイルに出力されているKFAA30559-Eメッセージを検索します。
また,手順3.で記録したメッセージログ情報と,メッセージに出力されているメッセージログ情報が一致しているかを確認してください。一致しているKFAA30559-Eメッセージが該当するメッセージになります。
(例)
-
メッセージに記載されている対処方法を参照する
メッセージに記載されている対処方法を参照して,SQL文のエラー原因を特定してください。
この例の場合,KFAA30559-Eメッセージの対策欄に記載されている対処方法に従ってください。
(2) SQL文がどこまで実行されたかを特定する方法
SQLトレース情報の出力単位によって方法が異なります。
(a) コール単位でSQLトレース情報を出力している場合
sqlcode欄に出力されているSQLCODEが負の値になっているコールでエラーが発生しています。
(例)
(b) SQL文単位でSQLトレース情報を出力している場合
出力された項目と出力されなかった項目を確認して,どのコールでエラーが発生したかを判断します。例を次に示します。
-
例1:実行したSQL文は出力されているが,アクセスパス情報は出力されなかった場合
この場合,PREP(SQL文の前処理)またはEXDI(SQL文の前処理および実行)の処理時にエラーが発生しています。
-
例2:実行したSQL文,アクセスパス情報,および?パラメタの情報は出力されているが,SQL文の統計情報およびアクセスパスの統計情報は出力されなかった場合
この場合,OPEN(カーソルのオープン)の処理時にエラーが発生しています。