実稼働環境でこの「ネットワークアダプタが接続を確立できませんでした」という問題が発生することがありました。Googleで多くのことを行い、ここでいくつかの質問をしましたが、それでも解決策が得られませんでした。
これが私たちの環境に関するいくつかの情報です:
- 2つのOracleインスタンス(バージョン10.2.0.4)でRACを使用しています。
- RAC上で実行されているいくつかのアプリサーバー(JBoss AS5)があります。
- oracle-ds.xmlの接続URLは"jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = db1_vip)(PORT = 1521))(ADDRESS =(PROTOCOL = TCP )(HOST = db2_vip)(PORT = 1521))(LOAD_BALANCE = yes))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = G1db)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC)(RETRIES = 120)( DELAY = 5)))) "
- db1_vip / db2_vipと、2つのOracleインスタンスの実際のIPを両方のアプリサーバーの/ etc/hostsに追加しました
- Oracleインスタンスとアプリサーバーの間にファイアウォールがありますが、両方のOracleインスタンスで1521ポートを開きました。
ネットワークまたはOracleTNSリスナーに問題があるかどうかを確認するために、次のテストを実行しました。
- アプリサーバーから両方のOracleインスタンスへのpingを実行すると、パケット損失なしですべてが正常に機能します。
- 1521ポートをアプリサーバーから両方のOracleインスタンスにtelnetで接続します。問題はありません。
- tnspingも正常に機能します。
- リスナーログを確認しましたが、価値のあるものは何も見つかりませんでした。
最も奇妙なことは、このエラーは1つのアプリサーバーでは1時間に約10回発生しますが、別のアプリサーバーでは1日に1〜2回しか発生しないことです。
誰かがこのエラーに光を当てることができますか?
ありがとう
[EDIT4]:1つのOracleインスタンスをtnspingするとタイムアウトの問題が見つかりました。そのため、jdbcのURLを変更して1つのインスタンスのみを接続し、IOExceptionが二度と発生しないことを確認しました。この問題はデータベースに関連していると考えられ、DBAチームは引き続き調査を行います。これ。
[EDIT3]:次の試みを行いました:
- アプリサーバーとデータベースサーバー間のファイアウォールを無効にしました
- ホスト名の代わりにIPを使用する
- wiresharkを使用して、tcpパケットに問題があるかどうかを確認します。
どれも成功しません、誰か助けてください〜
[編集]:エラースタックトレース:
java.sql.SQLException: Io Exception: The Network Adapter could not establish the connection
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:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:207)
... 5 more