java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
127.0.0.1:1521:ORACLE10
          at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:279)
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:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.db.DBConnection.getConn(DBConnection.java:12)
at com.db.DBConnection.main(DBConnection.java:22)包已经导入了。。不知道是不是端口号的问题。可是我前些天就用了1521的。今天就不行了。。我的是oracle10的
//测试的类。。
class DBConnection 
{
public Connection getConn(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORACLE10","scott","scott");


} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
System.out.println(new DBConnection().getConn());
}
}

解决方案 »

  1.   

    TNS:listener does not currently know of SID given in connect descriptor
    一看就知道你监听那有问题了啊修改listener.ora文件 
    原listener.ora文件:
    # listener.ora Network Configuration File: D:\oracle\product\10.1.0\Db_4\network\admin\listener.ora
    # Generated by Oracle configuration tools.
    SID_LIST_LISTENER =
      (SID_LIST =    (SID_DESC =      (SID_NAME = PLSExtProc)      (ORACLE_HOME = D:\oracle\product\10.1.0\Db_4)      (PROGRAM = extproc)    )  )LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))      )      (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))      )    )  )修改后的文件:---------------------------------------------------------------------------------------# listener.ora Network Configuration File: D:\oracle\product\10.1.0\Db_4\network\admin\listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (SID_NAME = PLSExtProc)      (ORACLE_HOME = D:\oracle\product\10.1.0\Db_4)      (PROGRAM = extproc)    ) (SID_DESC =       (GLOBAL_DBNAME = orcl)       (ORACLE_HOME =  D:\oracle\product\10.1.0\Db_4)         (SID_NAME = orcl)      )   )LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))      )      (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))      )    )  )-----------------------------------------------------------------如果错误还存在,也可以那试一下:
    set oracle_sid=<sid_name>
    sqlplus /nolog
    connect sys/pwd as sysdba
    start 参考资料:http://joanzq.javaeye.com/blog/264593 
      

  2.   

    我的就是java连接不上的。用pl/sql可以登录的。。
       你的试过了。。但是还是出现同样的错误啊。
      

  3.   

     你的 数据库名字叫 ORACLE10   看你的监听里,谢的是orcl 呀, 既然你的数据SID_NAME = orcl 那么你的 java 就应该这样写
     return DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","scott");
      

  4.   

    呵呵。。谢谢啦。。不是这个问题的。。楼上的是他自己的。。不是我的。只是给我举例看一下的。。
    问题已经解决了。。我的Myeclipse占了我的Oracle的端口号8080。我把Myeclipse的端口改了。就ok了。。