2016-12-14 14 views
0

JavaプログラムからSQL SELECT問合せを実行してレコードをフェッチしていますが、この問合せは正しく実行されることもありますが、ORA-56721:入出力データの制限を超えました - セッションが終了しました

私はJava 1.6とOracle 12cデータベースを使用しています。

Exception :: ORA-56721: I/O data limit exceeded - session terminated 

(他のプログラムからの)挿入のために、同じクエリを同時に実行していますか?

私はグーグルで解決策を検索しようとしましたが、以下の結果得

ORA-56721: I/O data limit exceeded - session terminated 

Cause: The Resource Manager SWITCH_IO_MEGABYTES limit was exceeded. 

Action: Reduce the complexity of the update or query, or contact your database administrator for more information. 

Java側からこの例外を処理する方法はありますか?これを解決するために、プログラムの実行中にJVMのヒープメモリサイズが増加するのでしょうか?

+0

このエラーはOracleの内部エラーです。あなたがJavaで行うことは、それを変更するものではありません。おそらくhttp://dba.stackexchange.comでこの質問に対するより良い回答を得るでしょう。運が良かった。 –

答えて

3

リソースが多すぎるため、システムの残りの部分に影響を与えているため(つまり、ディスクが必要です)、セッションが終了しています。解決策は、クエリがより多くのリソースを消費するのではなく、より効率的にクエリをリファクタリングすることです。

作業が集中している場合は、単一のクエリを複数のステップに分割することを検討することをお勧めします。

1

DBサイドでは、基本的に非アプリケーション・ユーザーのインフラストラクチャー・リソース(ディスク入出力、メモリー、CPU)を制限するOracle Resource Managerという新機能が追加されました。私はクエリに非アプリケーションユーザを使用しています。

関連する問題