1

Java 1.6 を実行し、最新の ojdbc14.jar を使用します。リモート Oracle データベースに接続します。クエリが完了するまでに 2 分以上かからないように、QueryTimeout を設定します。

私はこれをしました:

  statement = conn.prepareCall(call);
  statement.setQueryTimeout(120);
  statement.executeQuery();

約8分後、最終的にタイムアウトします!これに対するアイデアや回避策はありますか?いつものように、あなたの助けは大歓迎です!

編集:細いドライバーを使用します

4

2 に答える 2

2

See how query timeout works in Oracle JDBC driver here: https://forums.oracle.com/forums/thread.jspa?threadID=550257

Long story short:

  1. It takes a full round trip to the database to cancel the SQL execution when the timeout expires. The database will get around to processing the cancel request when it feels like it.
  2. ドライバのタイムアウト メカニズムは、高精度のメカニズムではありません。実際に実行をキャンセルするには、ネットワークを介してデータベースと通信する必要があるため、ドライバーを非常に正確にしても意味がありません。ドライバーが正確であったとしても、データベースがキャンセル要求に応答するために必要なネットワーク遅延と時間により、ドライバーの正確さが無効になります。したがって、タイムアウトは、サーバーにキャンセルを送信する前にドライバーが SQL を実行するための最小時間です。
于 2013-05-16T13:29:58.800 に答える