在Win8,Oracle 11g XE上使用ORA-12505进行JDBC连接失败

时间:2013-03-12 21:52:46

标签: jdbc oracle-xe tns

我的错误超出了我在TNS-12505: TNS:listener does not currently know of SID given in connect descriptor

中看到的错误

我正在使用Windows 8,Oracle 11.2 XE,java 1.7.15和Eclipse Juno SR2。

我收到的错误是:

java.sql.SQLException:侦听器拒绝连接时出现以下错误: ORA-12505,TNS:监听器当前不知道连接描述符中给出的SID

我已经正确注册了驱动程序,并且我已经编辑了listener.ora以使服务显式化,我以两种方式看作是示例 - 在SID_LIST_LISTENER下,我添加了:

(SID_DESC =
   (SID_NAME = XE)
   (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
)

并且在LISTENER下=(DESCRIPTION_LIST我添加了

(DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
 (CONNECT_DATA =
   (SERVER = DEDICATED)
   (SERVICE_NAME = XE)
 )

tnsnames.ora包含,作为其第一个条目:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

拨打电话的源代码是:

Class.forName(JDBC_DRIVER);
String connectionString = "jdbc:oracle:thin:localhost:1521/XE";
myConnection = DriverManager.getConnection(connectionString, "myuser", "myuserpw");

我也经历过connectionString的以下排列。结果如下:

jdbc:oracle:thin:@localhost:1521:XE // java.sql.SQLException: ORA-01017: invalid username/password; logon denied
jdbc:oracle:thin:localhost:1521:XE  // error ORA 12505
jdbc:oracle:thin:@//localhost:1521:XE // error java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
jdbc:oracle:thin:@localhost:1521/XE // error ORA-01017
jdbc:oracle:thin:@//localhost:1521/XE // error ORA-01017

有人有想法吗?

2 个答案:

答案 0 :(得分:2)

我有一个答案! (我猜,血腥的固执是它自己的奖励) 我更改了我所做的Connection调用并重新构建了连接字符串,如:

String connectionString = "jdbc:oracle:thin:myuser/mypw@localhost:1521:XE"; 
myConnection = DriverManager.getConnection(connectionString); 
这是有效的!现在下一个人可以谷歌了。每次尝试时,带有三个参数的调用版本都会爆炸,但是在单参数调用中嵌入了用户名/ pw的相同基本字符串。

我相信这是XE数据库提供的驱动程序中的一个错误 - 哦,Oracle,您能告诉我们吗?

答案 1 :(得分:0)

OPEN cmd

执行lsnrctl命令。

start提示中输入LSNRCTL>