连接数据库代码:
public class ConnectionDB {
public static Connection getConn(){
Connection conn=null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","system","admin");
System.out.println("123");
} catch (ClassNotFoundException e) {// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) {
ConnectionDB cd=new ConnectionDB();
Connection con=cd.getConn();
if(con==null){
System.out.println("连接失败");
}else{
System.out.println("连接成功");
}
}异常:
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:
localhost:1521:orclat oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:260)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:386)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:413)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:164)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at train.dao.ConnectionDB.getConn(ConnectionDB.java:10)
at train.dao.ConnectionDB.main(ConnectionDB.java:38)
连接失败
  请高人指点!有点急!在线等!

解决方案 »

  1.   

    别人机子上orcale有orcl这个SID的数据库,你自己机器上没有所以就连不通
      

  2.   

    是数据库连接数量的问题,12519错误为监听不能提供服务,通常为数据库进程达到上限导致。      可以先执行下 select count(*) from v$process ,看下现在系统有多少连接数,然后再查询 select value from v$parameter where name = 'processes' ,看下oracle设置中设置了多少连接数,一般一个应用都会使用20个,所以如果你开了几个应用的话(web、pl/sql、……)就会出这个问题了,这时只需要执行下alter system set processes = 300 scope = spfile; 就可以了,当然300可以根据实际情况设置。上面是百度的原话!我Copy代码,运行  没有问题啊!
      

  3.   

    打开Oracle的 listener.ora 文件中的SID_LIST_LISTENER =
    {
    }的大括号内加上这个(SID_DESC =      
              (GLOBAL_DBNAME = ORCL)       
              (ORACLE_HOME = /app/oracle/oracle/product/10.2.0/db_1)      
              (SID_NAME = ORCL)
    )
    然后重启Oracle的监听器。
      

  4.   

    http://qtlkw.iteye.com/blog/789195
      

  5.   

    oracle安装环境问题!数据库实例名啊!端口啊!用户名!密码可能和你的不一样!
      

  6.   

    “oracle安装环境问题!数据库实例名啊!端口啊!用户名!密码可能和你的不一样!”
    那台机子与我的机子在实例名,端口,用户名,密码都是一致的
          刚刚重新配置了监听,少了一段错误变成了:
    java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:254)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:386)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:413)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:164)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at train.dao.ConnectionDB.getConn(ConnectionDB.java:10)
    at train.dao.ConnectionDB.main(ConnectionDB.java:38)
    连接失败
    “是数据库连接数量的问题,12519错误为监听不能提供服务,通常为数据库进程达到上限导致。  可以先执行下 select count(*) from v$process ,看下现在系统有多少连接数,然后再查询 select value from v$parameter where name = 'processes' ,看下oracle设置中设置了多少连接数,一般一个应用都会使用20个,所以如果你开了几个应用的话(web、pl/sql、……)就会出这个问题了,这时只需要执行下alter system set processes = 300 scope = spfile;  就可以了,当然300可以根据实际情况设置。”我试了,系统有21个连接数,而oracle设置了150个连接数,是不是就是这个问题!使用连接池或者其它方法?
      

  7.   

    先看下oracle的监听器和服务有没有开启,在用plsql连接下:jdbc:oracle:thin:@localhost:1521:orcl","system","admin“,看看是否能连接通。