2012-11-06 31 views
1
import java.sql.SQLException; 
import oracle.jdbc.pool.OracleDataSource; 
import java.sql.Statement; 
import java.util.Properties; 
import oracle.jdbc.OracleConnection; 

public class Test { 

static final String url2= "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP 

(HOST=192.168.1.171)(PORT=5521))"+"(CONNECT_DATA =(SERVICE_NAME = rdbms)))"; 

public static void main(String[] args) throws SQLException { 

      OracleDataSource ds = new OracleDataSource(); 
      Properties prop = new Properties(); 
      prop.setProperty("user","system"); 
      prop.setProperty("password","manager"); 
      prop.setProperty("internal_logon","sysdba"); 
      prop.setProperty("prelim_auth","true"); 
      ds.setConnectionProperties(prop); 
      ds.setURL(url2); 
      OracleConnection conn = (OracleConnection)ds.getConnection(); 
      conn.startup(OracleConnection.DatabaseStartupMode.NO_RESTRICTION); 
      conn.close(); 
    } 
} 

在11g中启动SQL数据库越来越无法通过jdbc.Getting的Java SQL例外

Exception in thread "main" java.sql.SQLException: Listener refused the connection with the following error: 
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor 

任何人都可以在这方面帮助?

回答

0

你必须明白,当涉及到异常,多次JDBC只是作为一个包装错误发生在数据库端,
或传播的驱动程序特定的(即 - PostgreSQL JDBC驱动,Oracle JDBC驱动程序)的特定错误。
你应该谷歌的错误,你会发现我相信是一个清晰的解释:
http://ora-12514.ora-code.com/
如果您看到其中一条建议,则需要几秒钟后重试并重新连接。

+0

:哎呦!我迟到了19秒:) –

1

原因:
监听器接收到建立到数据库或其他服务的连接的请求。侦听器接收到的连接描述符为服务(通常是数据库服务)指定服务名称,该服务尚未动态向侦听器注册,或者尚未为侦听器静态配置。这可能是一种临时情况,例如在侦听器启动之后,但在数据库实例向侦听器注册之前。

操作: - 稍等片刻,尝试再次连接。

  • 检查其服务目前被听者知道通过执行程序:lsnrctl服务

  • 检查中使用的网络服务名的连接描述符的SERVICE_NAME参数指定由听众已知的服务。

  • 如果使用简单连接命名连接标识符,请检查指定的服务名称是否是侦听器已知的服务。

  • 检查listener.log文件中的事件。