33

昨日の夕方、私は自分で書いた実行中の Java プログラムを持ってオフィスを出ました。JDBC 接続を使用して、当社のデータベース (Oracle) に多くのレコードを挿入する必要があります。今朝、仕事に戻ったときに、次のエラーが表示されました (try-catch によってキャッチされました)。

java.sql.SQLRecoverableException: I/O Exception: Connection reset

プログラムは、この問題が発生する前にほぼすべてのレコードを書き込んでいましたが、問題が発生するのが早かった場合 (夕方にオフィスを出てから数分後) はどうなるでしょうか。何が起こったのか理解できません。データベース管理者に連絡したところ、データベースに特に問題はないとのことでした。

何が起こったのか、それを避けるために何ができるのかについて何か考えはありますか?

4

8 に答える 8

20

これは単に、バックエンド ( DBMS ) の何かが、リソースが利用できないなどの理由で動作を停止することを決定したことを意味します。コードや挿入の数とは関係ありません。同様の問題の詳細については、次を参照してください。

これはあなたの質問に答えないかもしれませんが、なぜそれが起こっているのかを知ることができます. DBA とさらに話し合って、あなたのケースに具体的な何かがあるかどうかを確認することができます。

于 2011-05-24T12:41:06.153 に答える
6


アプリケーションのセットアップを変更して、このパラメータ [ -Djava.security.egd =file:/dev/../dev/urandom ] を java コマンドの横に追加します。

java -Djava.security.egd=file:/dev/../dev/urandom [コマンド]

参照: - https://community.oracle.com/thread/943911

于 2016-08-30T17:38:53.380 に答える
5

11g から 12c にアップグレードした後、断続的にこれらのエラーが発生し、Java は 1.6 でした。

私たちにとっての修正は、Java と jdbc を 6 から 7 にアップグレードすることでした。

export JAVA_HOME='/usr/java1.7'

export CLASSPATH=/u01/app/oracle/product/12.1.0/dbhome_1/jdbc/libojdbc7.jar:$CLASSPATH 

数日後、断続的に接続がリセットされます。

上記のJava 7をすべて削除することになりました。Java 6 は問題ありませんでした。この問題は、これをユーザーの bash_profile に追加することで修正されました。

エラーが発生していた Groovy スクリプトは、バッチ VM サーバーで /dev/random を使用していました。以下では、Java と groovy に /dev/urandom の使用を強制しました。

export JAVA_OPTS=" $JAVA_OPTS -Djava.security.egd=file:///dev/urandom "

于 2015-03-17T18:30:18.660 に答える
2

あなたの例外はそれをすべて「接続のリセット」と言っています。Java プロセスと db サーバー間の接続が失われました。これは、ネットワークの問題など、ほとんどの理由で発生した可能性があります。SQLRecoverableExceptionは単に回復可能であることを意味しますが、根本的な原因は接続のリセットです。

于 2011-05-24T12:36:43.120 に答える
0

実行コマンドにJavaセキュリティを追加します

java -jar -Djava.security.egd="file:///dev/urandom" yourjarfilename.jar

于 2020-09-24T05:51:08.280 に答える