Io 異常: The Network Adapter could not establish the connection
這個異常的出現(xiàn)一般與數(shù)據(jù)庫和你的PC的設(shè)置有關(guān)
這種異常的出現(xiàn)大致上有下面幾種:
1。IP錯誤。
在設(shè)置URL時錯誤,例如:jdbc:oracle:thin:@192.168.0.36:1521:sharp
數(shù)據(jù)庫服務(wù)器不正確:ping 服務(wù)器IP是否正確。不正確,將URL更改為正確
端口號錯誤:一般不會錯誤。
進(jìn)行一下操作:在DOS上鍵入sqlplus,檢查oracle是否開啟
一卻正常,執(zhí)行下面第2步。
2。防火墻
如果機(jī)器上安裝有放火墻,可能是服務(wù)器端口號屏蔽而造成的。關(guān)閉防火墻后,嘗試重新連接。
仍然不行,執(zhí)行第3步。
3。數(shù)據(jù)庫監(jiān)聽未啟動 修改PC上注冊表中的ImagePath值。
我下面以現(xiàn)在主流的數(shù)據(jù)庫ORACLE為例
重新手動啟動數(shù)據(jù)庫監(jiān)聽:
1:開始 → 運(yùn)行→ 輸入CMD→ 進(jìn)入DOS命令提示界面
d:>lsnrctl
LSNRCTL> status
或者
LSNRCTL> start
如果是類似圖片中的信息
恭喜,你的問題已經(jīng)查找出來,是數(shù)據(jù)庫監(jiān)聽器沒未啟動而造成的。
以下是手動啟動數(shù)據(jù)庫的方法:
在運(yùn)行處執(zhí)行regedit進(jìn)入注冊表到
開始 →運(yùn)行→ regedit
按下面路徑
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome90TNSListener
找到OracleOraHome90TNSListener(我用的是Oracle9i 其他的版本的應(yīng)該是OracleOraHomexxxTNSListener)
找到之后你會發(fā)現(xiàn)ImagePath關(guān)鍵值不存在了,創(chuàng)建它:(存在的話,點(diǎn)擊修改,修改方法在下文有介紹)
右鍵單擊,彈出菜單選擇新鍵(N)→字符串值(S)
將其命名為ImagePath
選中ImagePath點(diǎn)右鍵,選中修改:
在值中輸入你的Oracle安裝目錄\ora90(其他本對應(yīng)的是oraxxx目錄)\bin\tnslsnr
如果是ORACLE 10G則安裝目錄為F:\oracle\product\10.1.0\Db_2\BIN\tnslsnr
確定后退出注冊表:
再在DOS命令下鍵入start
如果出現(xiàn)下面畫面,恭喜你,監(jiān)聽器啟動成功:
關(guān)閉DOS,啟動你的程序進(jìn)行測試,應(yīng)該恢復(fù)正常了。
以上就是3中常見的引發(fā)The Network Adapter could not establish the connection 異常的原因
文章出處:DIY部落(http://www.diybl.com/course/3_program/java/javashl/20071126/87790.html)
異常如下:
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).如果用到的是本機(jī)上的數(shù)據(jù),本地數(shù)據(jù)源里的部分配置為: username="pcisv62" password="11" url="jdbc:oracle:thin:@localhost:1521:orcl"
(2).如果用到的是服務(wù)器上的數(shù)據(jù),則數(shù)據(jù)源里的部分配置為: username="pcisv62" password="11" url="jdbc:oracle:thin:@dbserver:1521:corev6"
(dbserver為服務(wù)器的名字,corev6為服務(wù)器上Oracle的SID)
2.可能是oracle的tnsnames.ora文件配置出錯。
oracle的安裝目錄E:\oracle\ora92\network\admin下的tnsnames.ora:
本地配置:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 主機(jī)名)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
或服務(wù)器配置:
COREV6_DBSERVER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
)
(CONNECT_DATA =
(SID = COREV6)
(SERVER = DEDICATED)
)
)