在Win8、Oracle 11g XE上与ORA-12505的JDBC连接失败

在Win8、Oracle 11g XE上与ORA-12505的JDBC连接失败,jdbc,oracle-xe,tns,Jdbc,Oracle Xe,Tns,我犯的错误超出了我的想象 我使用的是Windows8、Oracle11.2Xe、Java1.7.15和EclipseJunoSR2 我收到的错误是: java.sql.SQLException:侦听器拒绝连接,出现以下错误: ORA-12505,TNS:侦听器目前不知道连接描述符中给出的SID 我已经正确注册了驱动程序,并且编辑了listener.ora以使服务明确化,在我所看到的两种方式中,我都以SID_LIST_listener为例,我添加了: (SID_DESC = (SID_NAM

我犯的错误超出了我的想象

我使用的是Windows8、Oracle11.2Xe、Java1.7.15和EclipseJunoSR2

我收到的错误是:

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 =
 (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
有人有想法吗?

我有答案!(我想,血腥的顽固是它自己的报偿) 我更改了所做的连接调用,并重新构造了thataway连接字符串,如中所示:

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

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

OPEN
cmd

执行
lsnrctl
命令


LSNRCTL>
提示符中键入
start

您的第一个连接字符串是我通常使用的字符串。我可以在Windows 7上连接到Oracle 11g XE。ORA-01017向我指示您的数据库已启动并正在运行,但您提供的连接到该数据库的身份验证详细信息无效。请回答以下愚蠢的问题:haps:你确定用户名和密码是正确的吗?是的,我尝试了几种用户名和密码的排列方式,包括出于挫折的系统。我有一个答案!虽然我没有足够的StackOverflow点数,但我不能再发布8个小时,这里是评论:(我想,血腥的固执是它自己的报偿)我更改了我所做的连接调用,并重新构造了thataway连接字符串,如:string connectionString=“jdbc:oracle:thin:myuser/mypw@localhost:1521:XE“myConnection=DriverManager.getConnection(connectionString);很好!现在下一个家伙可以用谷歌搜索它了……奇怪-我无法复制这一点。我使用了Windows 8 x64、JDK 1.7.01732位和Oracle XE 11g 11.2.0.2.0,并使用列表中的第一个URL成功连接。不过,很高兴看到你解决了问题。这可能是我在公司笔记本电脑上编程的副产品-一些互联网休息“锁定”选项,他们已经设置。也许如果我是作为管理员运行,这不会是一个问题。嗯…谢谢你的贡献。