Oracleエラーが発生して、ログを確認すると、ORA-01013:ユーザによって現行操作の取り消しがリクエストされました。って出てるので、
ああ、タイムアウトが発生してしまったのかと言う理解で該当するSQLを抽出して検証するんだけど、タイムアウトになるような速度じゃなかったりする事がある。
もちろん、同じ環境で実施するのでプログラムからSQLを実行するか、直接実行するかの違いしかないはず。
にもかかわらずプログラムから実行したときにだけタイムアウトが発生するのはなぜなのか。
同じ状況になるのなら、原因も探りやすいと思うんだけど、結果が違ってしまっているのでこういう場合はちょっと困る。
直接的に問題となった箇所を調べるんだけど、
やっぱり問題はなさそうだ。
これで小一時間悩みまくったんだけど、
問題はログに出力されたSQLの一つ前に実行されるものが影響していたようで、レスポンスが悪くなる場合があったようだ。
まじかよ・・・。と思ったが、エラーで出力された箇所にとらわれて視野が狭くなっていたがこういうエラー調査をする場合は一つの箇所について調べるだけではなくて、少し視野を広げて全体の処理の流れを検証する方が、結果、早かったりする。
今回の件で言えば、
全体の処理の流れを再度チェックして、順番にチェックしていった結果、問題の箇所が判明した。
ベテランの人にとっては当たり前なのかもしれないが、調査ではひとつのものに固執せずに広い視野を持って流れを確認していく。
教訓ですね。
スポンサーリンク
スポンサーリンク