1. ホーム
  2. java

[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続

2022-02-24 22:53:05

質問

java.sql.SQLException が発生する理由。Oracleからの接続を閉じましたか?

<ブロッククオート

java.sql.SQLException: 接続が切断されました at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208) at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:1131) at oracle.jdbc.OracleConnectionWrapper.commit(OracleConnectionWrapper.java:117)

フェイルオーバーデータベース接続でこのエラーが発生します。他のデータベースにも同じコードを使用しています。しかし、そのうちの1つのデータベースでのみこの問題が発生しています。これは、長い非アクティブ時間によって接続がタイムアウトし、それを使用しようとしているためでしょうか?詳細が必要な場合は、私に知らせてください。

AbandonedConnectionTimeoutの設定:15分 InactivityTimeoutの設定:30分

解決するには?

ある時点で接続に成功したが、その場でコミットしようとしたら、接続が開かれなくなったということです。あなたが言ったパラメータは、コネクションプールの設定のように聞こえます。もしそうなら、この問題とは無関係です。最も可能性の高い原因は、あなたとデータベースの間にあるファイアウォールが、ある一定のアイドル時間が経過すると接続を切断してしまうことです。最も一般的な修正方法は、コネクションプールからコネクションがチェックアウトされたときに、コネクションプールが検証クエリを実行するようにすることです。これにより、死んだ接続を即座に識別して排除し、プールから良好な接続のみを取得することができます。