Cause: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
错误代码很长:写道
Caused by: java.sql.SQLException: Io 异常: 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 java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:174)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:165)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:210)
at $Proxy134.prepareStatement(Unknown Source)
at sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.ibatis.common.jdbc.logging.ConnectionLogProxy.invoke(ConnectionLogProxy.java:53)
at $Proxy135.prepareStatement(Unknown Source)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.prepareStatement(SqlExecutor.java:497)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:175)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteQuery(MappedStatement.java:221)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:189)
... 100 more
2011/10/17 11:27:31 DEBUG 000000000000885: null com.ustcsoft.sw.util.interceptor.AppExceptionInterceptor http-8080-2 -
--- The error occurred in sql/settlement_sql.xml.
--- The error occurred while executing query.
--- Check the select t$bapr as price, t$ptyp as type, trim(t$item) as componentNo, t$efdt as startDate, t$exdt2 as endDate, t$poty as orderType, t$endt as inputDate, ? as supplierNo, ? as queryStartDate, ? as queryEndDate from baan.v_erp2sws_partsprice where trim(t$bfbp) = ? and (t$ptyp = '3' or t$ptyp = '4') order by t$ptyp desc, t$endt desc .
--- Check the SQL Statement (preparation failed).
--- Cause: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
package: settlement settlementAction: searchUsableReceiveRow
问题补充
网上的方法不能很好的解决啊,到底是代码写的问题,还是数据库安装或配置问题?
问题补充
oracle我不太熟悉啊,什么监听是什么意思啊,为什么要监听
问题补充
AnnBaby 写道
我也遇到过了。
更新了jdbc jar 包就好了。
更新哪个包?我是10.2版本的oracle,用哪个包?
问题补充oracle不是本地的,是在另一台机器上的,有什么问题?
问题补充为什么会提示telnet不是内部命令,我疯了
问题补充端口防火墙都没有问题,
具体的情况是
有时候会出现这个错误,比如修改某记录时
但有时候修改和插入数据又不会有这样的错误,太无语了
问题补充好长好长的错误的代码,
如果是没连上数据库,为什么有的时候操作可以,有的时候就报这个错误
太无语了
建议你在本地装一个oracle实例,修改你的连接配置到本地,如无问题则问题出在网络上!
建议你检查一下网络,这个异常表示你在获取数据库连接时失败了,你可以试着在本机 ping 一下你的数据库计算机 ping <数据库ip> -t 例如 ping 10.1.7.1 -t 看看网络是否稳定,是否有丢包的情况,如确定网络稳定,在更新oracle驱动程序,使用oracle自带的那个jdbc驱动包就可以了, 例如 D:\oracle10g\jdbc\lib下的classes12.jar 。
是你TNS的问题吧
检查Oracle数据库是否运行正常,机器和数据库通信是否正常,连接参数是否正确。
你先拿别的连接一下。比如SQL Developer 或者SQLPlus。连上多半就是你代码的问题,连不上检查配置和通信。
明显数据库链接的问题,看网络是否正常,看数据库是否启动和启动监听器
看报错信息的字面意思是网络有问题。
我也遇到过了。
更新了jdbc jar 包就好了。
重装。。哪
jar版本的事?
网络问题。!
你网络断开了,当然掉这个错啦。明显是网络不稳定嘛。
就是没连上,端口,防火墙,都检查一遍。Thin driver一般和TNS没关系,除非你的URL就是用tns来连。
检查一下你ORACLE下的tnsnames.ora和listener.ora。
改IP改机器名了?
[quote="小杨学JAVA"]oracle不是本地的,是在另一台机器上的,有什么问题?[/quote]
跟你说过了,端口,防火墙!
先telnet到那台机器的1521端口,看看行不行再说!
关掉数据库服务,再重新开一下服务,可以百度一下,关于监听器的开启需要注意的是
退出SQL模式再执行
sqlplus / as sysdba // 进入 sqlplus以sysdba的身份
startup // 启动一个oracle实例
conn/ as sysdba // 以sysdba的身份连接到orace实例
quit // 退出sql模式
lsnrctl start // 启动监听器 这个不能在sql模式下执行
你ora的配置是用什么工具打开改的,直接用txt打开改编码可能会有问题,全删掉。用editplus之类的工具打开编缉链接
[quote="小杨学JAVA"]为什么会提示telnet不是内部命令,我疯了[/quote]
win7的telnet默认是关闭没有安装的 :wink: XP神马的就不知道了。。。。
到oracle.com 去下载一个最新的 驱动包 试试
time out 了
多贴点啊,光贴个这个没法定位错误啊
没连接上oracle。这是个很常见的问题。
telnet 1521端口
我也遇到过这个问题,报这个错得原因是你连接数据库超时了。 先检查你的连接数据库语句是否正确,数据库服务器IP地址等配置信息是否有误。还有数据库是不是正常工作,监听是否打开。如果都不是这些问题,可能是你一次性查询大量数据,而你的网络又不稳定,就会造成这个超时异常。耐心检查一下吧
如果oracle本身没有问题,特别是在别的机器上用sqlplus、pl/sql developer之类的都没问题,也排除了jdbc jar包版本问题,可以试试改jdbc url
好象大多数人用jdbc连接oracle都这么写jdbc:oracle:thin:@ip:port:sid,你可以试试按下面的写
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=服务器地址)(PORT=1521)))(CONNECT_DATA=(SID=orcl)(SERVER=DEDICATED)))
架包,要不就是网络连接的问题,...
错别字我手瀑布了
米有链接上啊。仔细看看数据库是否启动,还有你的配置文件信息吧。
问题不可怕,怕的是乱投医。