コンテキスト: Grails 2.1、Groovy SQL を使用して SQL ステートメントを実行します。データベースは、RedHat VM で実行されている Oracle 11G です。Grails は対話モードで実行されていますが、WAR として実行しても動作に違いはありません。
Groovy SQL 経由で、次の構造の SQL ステートメントを発行しています。
insert into...
select ... from...
これにより、@119K 行がフェッチおよび挿入されます。正常に実行されると、通常は 1 分以内に完了します。
このステートメントは、通常、実行に合計約 10 分かかり、他の多くのクエリで構成されるデータ インポート アプリケーション全体のコンテキストで実行されます。
動作は次のとおりです。
- Grails アプリを起動します
- アプリケーションでデータのインポートを開始します。期待どおりに実行され、データが大幅に変更されます
- もう一度アプリケーションを開始します。最初の数十のクエリは正常に実行されます
- 上記の大きなインサートでは、ハングします。
だから:初めて、問題はありません。2回目は、毎回同じ場所にぶら下がっています。
アプリケーションを再起動すると、再び正常に動作します。
ここからが奇妙になります。しばらくの間、これを回転させておきます。データベースを停止すると、クエリは実行され続けます。エラーは発生しません。
したがって、この動作がおなじみのように聞こえる場合は、解決策に興味があります。
これを診断する方法についてのアイデアがあれば、私もそれらに興味があります. 私はアプリケーション開発者であり、Oracle 側よりも Java 側に精通しています。支援してくれる社内の Oracle DBA を見つけようとしていますが、少なくとも当面は独力です。
アドバイスをありがとう。