我們開始在我們的生產環境中有時出現這種「網絡適配器無法建立連接」的問題,我做了很多谷歌並在這裏經歷了一些問題,但仍然沒有得到解決方案。IOException:網絡適配器無法建立連接
以下是關於我們的環境的一些信息:
- 我們正在使用RAC與2個Oracle實例(10.2.0.4版)。
- 我們有幾個在RAC之上運行的應用程序服務器(JBoss AS5)。
- oracle-ds.xml中的連接URL是「jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = db1_vip)(PORT = 1521))(ADDRESS =( (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = G1db)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC)(RETRIES = YES)PROTOCOL = TCP)(HOST = db2_vip)(PORT = 1521) 120)(DELAY = 5))))」
- 我們添加db1_vip/db2_vip以及2個Oracle實例的實際IP到兩個應用服務器的/ etc/hosts中
- 有Oracle實例和應用服務器之間的防火牆,但是我們在兩個oracle實例上打開了1521端口。
我們已經運行下面的測試,以檢查是否有網絡或Oracle TNS監聽任何問題:從應用服務器到兩個Oracle實例
- 跑平,一切都沒有任何丟包工作正常。
- 將1521端口從應用服務器telnet到兩個oracle實例,沒有錯。
- tnsping也可以正常工作。
- 我們檢查了監聽器日誌,但沒有發現任何有價值的東西。
最奇怪的是,這個錯誤在一臺應用服務器上每小時發生10次左右,但在另一臺應用服務器上每天只發生1次或2次。
任何人都可以在這個錯誤?
感謝
[EDIT4]:我們發現超時的問題用tnsping一個Oracle實例的時候,所以我們改變了JDBC URL連接只有一個實例,發現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
它只是一個提示:我在x64上遇到了java7的網絡錯誤。如果您使用的是java7,請嘗試版本6. – Mirko
我們在兩個應用程序服務器上都使用jdk5。 – asticx
嘗試使用數據庫服務器的IP地址而不是其主機名稱;如果這個工作沒有任何失敗,那麼你可以將這個問題縮小到dns主機名解析。 – Zaki