ORACLE总是报这样的错误啊,我首部了,

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)))

架包,要不就是网络连接的问题,...

错别字我手瀑布了

米有链接上啊。仔细看看数据库是否启动,还有你的配置文件信息吧。
问题不可怕,怕的是乱投医。