- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プロシージャをコンパイルするとフリーズ)
プロシージャをコンパイルするとフリーズ
このQ&Aのポイント
- プロシージャを.sqlファイルに記述し、sql*plusより.sqlファイルを実行すると途中で反応がなくなります。
- CreateTableでも同じことが起きてますが、こちらは一定の長さまでのCreate文は受理し、途中で止まってしまいます。
- どうもスクリプトが長いと途中で止まっているみたいなのですが、なんで止まるのかがわかりません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
スクリプトを見ていないので 詳しいことは分かりませんが、スクリプトの最後に"/"をつけていますか? これが実行の合図です。これがないと、スクリプトの内容を読み込ませただけで、実行はされません。 また、immediateを使用した場合は、その時点でアクティブセッションが存在していると、それが終了するまで待機します。そのため、待機状態になり、レスポンスが帰ってこないように見えるわけです。 systemユーザで select program,status from v$session; を実行するとアクティブなものがあるか分かります。 とすると、上記のスクリプトは アクティブになっている可能性が高いですね。スクリプトは正しいのでしょうか?無限ループのチェックなどをきちんとすることをおすすめします。 扱うレコード数がかなり多い場合は、それなりに時間がかかることもあると思います。その際は、スクリプト内SQLのチューニングが必要です。