PL/SQLで処理がたまに遅くなることがあり、原因の解決のため質問させてください。
パッケージに、SELECTの処理とテキストデータを出力する処理を記載しております。
この時、通常では20秒ぐらいで処理が終了するのですが、20分かかってしまう時があります。
処理の間にログを出力するようにして調査したところ、初回の
FETCH ~ INTO
部分で処理が遅くなっていることがわかりました。
原因について、何が考えられるのでしょうか。
■PL/SQL
sql := sql || 'SELECT ~ ・・・'
①ログ出力
OPEN Cursor FOR Sql
USING X
,Y;
②ログ出力
{UTL_FILE.FILE_TYPE} := UTL_FILE.FOPEN({ディレクトリ},{ファイル名},'a');
LOOP
③ログ出力
FETCH Cursor Cursor INTO A, B, C ・・・
EXIT WHEN Cursor %NOTFOUND;
④ログ出力
{UTL_FILE.FILE_TYPE} .PUT_LINE
⑤ログ出力
END LOOP;
⑥ログ出力
②のログが出力された後の③のログが出力されてから④のログが出力されるまでに、19分かかっており、それ以降は問題ありません。
考えられる原因、又は調査方法をご教授お願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。