两台机器数据库一样,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请问,怎么解决,非常感谢。
这个问题可能是很基础,可我确实找不到办法,请各位帮帮忙,小弟就此谢过。

解决方案 »

  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也可以用
      

  3.   

    在net manager里的监听程序->LISTENER-数据库服务显示:
    “未对此监听程序明确配置数据库服务。Oracle8i 8.1版的数据库将动态注册到该监听程序。可能是这里有问题。
      

  4.   

    刚刚看过一本书上面写的如果用户同数据库不在一台机器上的时候,需要在用户机器上设置环境变量NLS_LANG 还有 ORACLE network 制品(oracle net ),自己也没有实践过不知道好不好用。可以尝试一下。
      

  5.   

    居然是防火墙的原因,可是极度没道理
    win2003自带的防火墙,开了TCP 1521端口~
    但是就是连不上,关掉防火墙就OK了~~