环境:
数据库服务器与java程序不在同一个子网。
现状:
1.sqlplus可以连接
2.java程序无法连接
报错如下:
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(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
3.抓包发现,数据包超时重传,重传失败后报2中的异常信息
4.oracle数据库所在机器防火墙未开启
5.不是网上所说连接池的问题,该应用未使用数据库连接池
6.jdbc驱动正常请高手进来指导。
数据库服务器与java程序不在同一个子网。
现状:
1.sqlplus可以连接
2.java程序无法连接
报错如下:
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(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
3.抓包发现,数据包超时重传,重传失败后报2中的异常信息
4.oracle数据库所在机器防火墙未开启
5.不是网上所说连接池的问题,该应用未使用数据库连接池
6.jdbc驱动正常请高手进来指导。
解决方案 »
- java acm的简单格式输入输出(刚接触求大神!!!),题实现连续输入多行并求每行之和
- 为什么调用没有反映?先谢谢了
- 帮忙看看下面代码出什么问题了?运行后没有结果。
- 关于JGraph里设置工具提示问题
- 寻!以为会JNI的朋友帮忙啊~!!
- 请教 System.out.println("test " + s1=="Java"); Is this a bug?
- 弟兄们,进来探讨一个小技术问题.
- 一个关于package的简单问题(给出答案马上结贴,在线等)
- 几道基础题!大家看看!
- applet:class ***** not found
- 求助:如何获得ThreadPoolExecutor中阻塞了多少个线程
- 关于继承的问题,小弟不解泪奔中~求各位大侠相助
conn = DriverManager.getConnection(url, user, pwd);
String sql = "select * from tbl_drp_role t";
PreparedStatement ps = conn.prepareStatement(sql);
ps.executeQuery();
ResultSet rs = ps.getResultSet();
while(rs.next()){
String str = rs.getString(1);
System.out.println(str);
}
try
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (ClassNotFoundException e)
{
System.out.println("SQLException:"+e.getMessage());
System.err.println("ClassNotFoundException"+e.getMessage());
}
con=DriverManager.getConnection(url, user,password);
System.out.println("ok,数据库已经成功连接");
DatabaseMetaData dme=con.getMetaData();
System.out.println("所连接的数据库的url:"+dme.getURL());
System.out.println("此数据库的用户名:"+dme.getUserName());
}
catch (SQLException e)
{
System.out.println("SQLException:"+e.getMessage());
}
在同一网段的机器上该程序就可以运行
正常,监听没有问题,否则即便在相同网段的机器上部署该程序一样报错,但实际情况是在同一网段的机器上跑该程序没有问题
出错时提示信息:Software caused connection abort: recv failed
用的驱动就是数据库 jdbc/lib下的ojdbc14.jar,不是最新的,只要是数据库自身带的驱动就应该可以吧?
驱动和数据库应该是匹配的,数据库是在oracle官网上下载的安装的
如果可以检查一下tns里的ip,port和servicename和你程序中使用的相同吗
可以sqlplus连接,tns配置的ip,port servicename都一样。
tnsping ip 是ok的
服务Oracle中的相关Oracle相关程序没有开启,或者是突然断了
oracle server安装在一台虚拟机上,java程序在我自己的机器上
ssh能连上,我快崩溃了,不知道什么原因
服务器防火墙没开,oralce 1521端口是通的
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:467)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at crl.ibm.com.test.DbConnUtil.<clinit>(DbConnUtil.java:23)
Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at oracle.net.ns.Packet.receive(Packet.java:300)
at oracle.net.ns.DataPacket.receive(DataPacket.java:106)
at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:315)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:260)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:185)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:102)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:290)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOSESSKEY(T4CTTIoauthenticate.java:404)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:385)
... 7 more
null
TMD,我快死了,多种oracle
的连接方式都试过,thin,service_name 方式都试过,草草草。服务端监听的是hostname,大神求救...