1. 程式人生 > >Io 異常: The Network Adapter could not establish the connection解決方案

Io 異常: The Network Adapter could not establish the connection解決方案

Io 異常: The Network Adapter could not establish the connection
這個異常的出現一般與資料庫和你的PC的設定有關

這種異常的出現大致上有下面幾種:


1。IP錯誤。
在設定URL時錯誤,例如:jdbc:oracle:thin:@192.168.0.36:1521:sharp
資料庫伺服器不正確:ping 伺服器IP是否正確。不正確,將URL更改為正確
埠號錯誤:一般不會錯誤。
進行一下操作:在DOS上鍵入sqlplus,檢查oracle是否開啟
一卻正常,執行下面第2步。

2。防火牆
如果機器上安裝有放火牆,可能是伺服器埠號遮蔽而造成的。關閉防火牆後,嘗試重新連線。
仍然不行,執行第3步。

3。資料庫監聽未啟動 修改PC上登錄檔中的ImagePath值。
我下面以現在主流的資料庫ORACLE為例
重新手動啟動資料庫監聽:
1:開始 → 執行→ 輸入CMD→  進入DOS命令提示介面
d:>lsnrctl
LSNRCTL> status
或者
LSNRCTL> start
如果是類似圖片中的資訊

恭喜,你的問題已經查找出來,是資料庫監聽器沒未啟動而造成的。
以下是手動啟動資料庫的方法:
在執行處執行regedit進入登錄檔到
開始 →執行→ regedit
按下面路徑
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome90TNSListener
找到OracleOraHome90TNSListener(我用的是Oracle9i 其他的版本的應該是OracleOraHomexxxTNSListener)

 找到之後你會發現ImagePath關鍵值不存在了,建立它:(存在的話,點選修改,修改方法在下文有介紹)
右鍵單擊,彈出選單選擇新鍵(N)→字串值(S)

 
將其命名為ImagePath
選中ImagePath點右鍵,選中修改:

在值中輸入你的Oracle安裝目錄\ora90(其他本對應的是oraxxx目錄)\bin\tnslsnr

如果是ORACLE 10G則安裝目錄為F:\oracle\product\10.1.0\Db_2\BIN\tnslsnr

確定後退出注冊表:
再在DOS命令下鍵入start
如果出現下面畫面,恭喜你,監聽器啟動成功:

關閉DOS,啟動你的程式進行測試,應該恢復正常了。
以上就是3中常見的引發The Network Adapter could not establish the connection 異常的原因

異常如下:

org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io 異常: The Network Adapter could not establish the connection)
  at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.Java:1225)
  at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
 
Caused by: java.sql.SQLException: Io 異常: The Network Adapter could not establish the connection
  at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
  at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
  at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:335)
 

主要原因:

1.可能是server.xml檔案的DataSource配置出錯。

(1).如果用到的是本機上的資料,本地資料來源裡的部分配置為: username="pcisv62" password="11" url="jdbc:oracle:thin:@localhost:1521:orcl"
(2).如果用到的是伺服器上的資料,則資料來源裡的部分配置為: username="pcisv62" password="11" url="jdbc:oracle:thin:@dbserver:1521:corev6"

(dbserver為伺服器的名字,corev6為伺服器上Oracle的SID)

2.可能是oracle的tnsnames.ora檔案配置出錯。

oracle的安裝目錄E:\oracle\ora92\network\admin下的tnsnames.ora:
本地配置:
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 主機名)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  )
或伺服器配置:
COREV6_DBSERVER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = COREV6)
      (SERVER = DEDICATED)
    )
  )