测试代码如下:
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
请问,怎么解决,非常感谢。
这个问题可能是很基础,可我确实找不到办法,请各位帮帮忙,小弟就此谢过。
5 个解决方案
#1
对了,版本是Oracle 10g. 两台机器分别是winxp(自己用的) 和win2003(远程机器)
#2
netstat查看有:
Active Connections
Proto Local Address Foreign Address State
TCP northwood:1030 northwood:1521 ESTABLISHED
TCP northwood:1031 northwood:1521 ESTABLISHED
机器防火墙的1521端口也已经打开。
上面说到的sqlplus在直接用连接字串连接不成功时,再用用户名和密码登录又没问题。
isqlplus也可以用
Active Connections
Proto Local Address Foreign Address State
TCP northwood:1030 northwood:1521 ESTABLISHED
TCP northwood:1031 northwood:1521 ESTABLISHED
机器防火墙的1521端口也已经打开。
上面说到的sqlplus在直接用连接字串连接不成功时,再用用户名和密码登录又没问题。
isqlplus也可以用
#3
在net manager里的监听程序->LISTENER-数据库服务显示:
“未对此监听程序明确配置数据库服务。Oracle8i 8.1版的数据库将动态注册到该监听程序。
可能是这里有问题。
“未对此监听程序明确配置数据库服务。Oracle8i 8.1版的数据库将动态注册到该监听程序。
可能是这里有问题。
#4
刚刚看过一本书上面写的如果用户同数据库不在一台机器上的时候,需要在用户机器上设置环境变量NLS_LANG 还有 ORACLE network 制品(oracle net ),自己也没有实践过不知道好不好用。可以尝试一下。
#5
居然是防火墙的原因,可是极度没道理
win2003自带的防火墙,开了TCP 1521端口~
但是就是连不上,关掉防火墙就OK了~~
win2003自带的防火墙,开了TCP 1521端口~
但是就是连不上,关掉防火墙就OK了~~
#1
对了,版本是Oracle 10g. 两台机器分别是winxp(自己用的) 和win2003(远程机器)
#2
netstat查看有:
Active Connections
Proto Local Address Foreign Address State
TCP northwood:1030 northwood:1521 ESTABLISHED
TCP northwood:1031 northwood:1521 ESTABLISHED
机器防火墙的1521端口也已经打开。
上面说到的sqlplus在直接用连接字串连接不成功时,再用用户名和密码登录又没问题。
isqlplus也可以用
Active Connections
Proto Local Address Foreign Address State
TCP northwood:1030 northwood:1521 ESTABLISHED
TCP northwood:1031 northwood:1521 ESTABLISHED
机器防火墙的1521端口也已经打开。
上面说到的sqlplus在直接用连接字串连接不成功时,再用用户名和密码登录又没问题。
isqlplus也可以用
#3
在net manager里的监听程序->LISTENER-数据库服务显示:
“未对此监听程序明确配置数据库服务。Oracle8i 8.1版的数据库将动态注册到该监听程序。
可能是这里有问题。
“未对此监听程序明确配置数据库服务。Oracle8i 8.1版的数据库将动态注册到该监听程序。
可能是这里有问题。
#4
刚刚看过一本书上面写的如果用户同数据库不在一台机器上的时候,需要在用户机器上设置环境变量NLS_LANG 还有 ORACLE network 制品(oracle net ),自己也没有实践过不知道好不好用。可以尝试一下。
#5
居然是防火墙的原因,可是极度没道理
win2003自带的防火墙,开了TCP 1521端口~
但是就是连不上,关掉防火墙就OK了~~
win2003自带的防火墙,开了TCP 1521端口~
但是就是连不上,关掉防火墙就OK了~~