プロが教えるわが家の防犯対策術!

プロシージャを.sqlファイルに記述し、sql*plusより.sqlファイルを実行すると途中で反応がなくなります。別端末よりsvrmgrlからshutdown immediateを行おうとしてもレスポンスがかえってこなくなります。abortは受け付けてます。

CreateTableでも同じことが起きてますが、こちらは一定の長さまでのCreate文は受理し、途中で止まってしまいます。その後はプロシージャのときと同じです。
どうもスクリプトが長いと途中で止まっているみたいなのですが、なんで止まるのかがわかりません。
なにか対処方法がありましたら教えてください。使用しているのはOracle8i サーバはSolaris です。(バージョンはわかりません)

A 回答 (1件)

スクリプトを見ていないので 詳しいことは分かりませんが、スクリプトの最後に"/"をつけていますか? これが実行の合図です。

これがないと、スクリプトの内容を読み込ませただけで、実行はされません。

また、immediateを使用した場合は、その時点でアクティブセッションが存在していると、それが終了するまで待機します。そのため、待機状態になり、レスポンスが帰ってこないように見えるわけです。
systemユーザで
select program,status from v$session;
を実行するとアクティブなものがあるか分かります。

とすると、上記のスクリプトは アクティブになっている可能性が高いですね。スクリプトは正しいのでしょうか?無限ループのチェックなどをきちんとすることをおすすめします。
扱うレコード数がかなり多い場合は、それなりに時間がかかることもあると思います。その際は、スクリプト内SQLのチューニングが必要です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す