新手:用JDBC能连接本地Oracle数据库,但远程服务器的就不行了。请教,谢谢。

GOJYO 2005-07-17 10:04:34
两台机器数据库一样,Oracle安装也都是直接默认安装(新手-_-#)。
测试代码如下:
import java.sql.*;

public class OracleTest {

/**
* @param args
*/
public static void main(String[] args) {
// 测试连接
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@*.*.*.*:1521:DISDATABASE";//IP保密之~
String user = "SYSTEM";
String password = "******";//密码就不写了。。。呵呵
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);

if(!conn.isClosed()){
System.out.println("数据库连接成功!");
}
conn.close();
}
catch(ClassNotFoundException e) {
System.out.println("找不到驱动程序");
e.printStackTrace();
}
catch(SQLException e) {
e.printStackTrace();
}
catch(Exception e){
e.printStackTrace();
}
}
}

如果是连接本地机器,可以连接成功,换IP为另一台机器的时候就不行了(是不是没有启动什么listener?不懂。。。)
出现下面的异常:
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:273)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:318)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:343)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:147)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:31)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:545)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at gojyo.jdbc.OracleTest.main(OracleTest.java:24)

在CMD下用sqlplus连接时出现下列错误:
sqlplus SYSTEM/******@10.64.65.180:1521:DISDATABASE
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

请问,怎么解决,非常感谢。
这个问题可能是很基础,可我确实找不到办法,请各位帮帮忙,小弟就此谢过。
...全文
351 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
GOJYO 2005-07-22
  • 打赏
  • 举报
回复
居然是防火墙的原因,可是极度没道理
win2003自带的防火墙,开了TCP 1521端口~
但是就是连不上,关掉防火墙就OK了~~
mooooooon 2005-07-21
  • 打赏
  • 举报
回复
刚刚看过一本书上面写的如果用户同数据库不在一台机器上的时候,需要在用户机器上设置环境变量NLS_LANG 还有 ORACLE network 制品(oracle net ),自己也没有实践过不知道好不好用。可以尝试一下。
GOJYO 2005-07-17
  • 打赏
  • 举报
回复
在net manager里的监听程序->LISTENER-数据库服务显示:
“未对此监听程序明确配置数据库服务。Oracle8i 8.1版的数据库将动态注册到该监听程序。

可能是这里有问题。
GOJYO 2005-07-17
  • 打赏
  • 举报
回复
netstat查看有:
Active Connections

Proto Local Address Foreign Address State
TCP northwood:1030 northwood:1521 ESTABLISHED
TCP northwood:1031 northwood:1521 ESTABLISHED
机器防火墙的1521端口也已经打开。

上面说到的sqlplus在直接用连接字串连接不成功时,再用用户名和密码登录又没问题。
isqlplus也可以用
GOJYO 2005-07-17
  • 打赏
  • 举报
回复
对了,版本是Oracle 10g. 两台机器分别是winxp(自己用的) 和win2003(远程机器)

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧