首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ORA-12505,TNS:侦听器目前不知道连接描述符中给出的SID?

ORA-12505,TNS:侦听器目前不知道连接描述符中给出的SID?
EN

Stack Overflow用户
提问于 2018-03-26 06:30:04
回答 2查看 0关注 0票数 0

我在Windows 7 64位操作系统中安装了Oracle 11g Express Edition Release 2,并试图执行JDBC程序,然后出现以下错误:

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
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.jlcindia.jdbc.JDBCUtil.geOracleConnection(JDBCUtil.java:28)
    at Lab3O.main(Lab3O.java:15)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:385)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
    ... 8 more
EN

回答 2

Stack Overflow用户

发布于 2018-03-26 14:39:20

我通过更正我的jdbc字符串解决了这个问题。

例如,正确的jdbc字符串应该是...

jdbc:oracle:thin:@myserver:1521/XE

但我使用的jdbs字符串是...

jdbc:oracle:thin:@myserver:1521:XE

(注:之间1521XE应该是/

这个糟糕的jdbc字符串也给我一个ORA-12505错误。

票数 0
EN

Stack Overflow用户

发布于 2018-03-26 16:00:51

有几件事可能会导致此问题,但在开始使用JDBC之前,需要确保可以使用SQL * Plus连接到数据库。如果您不熟悉SQL * Plus,那么它就是一个用于连接Oracle数据库的命令行工具,Oracle数据库已经成为Oracle的标准组件,并且已包含在Oracle XE中。

当使用JDBC连接到Oracle数据库时,你不直接连接到数据库。而是连接到TNS侦听器,然后将其连接到数据库。该错误ORA-12505意味着侦听器已启动并且可以连接到它,但它无法将你连接到数据库,因为它不知道该数据库已启动。有两个原因:

  • 数据库尚未启动,
  • 数据库没有注册到监听器,例如因为数据库是在监听器之前启动的。(当数据库启动时,如果侦听器已经在运行,它将向侦听器注册自己,如果侦听器未运行,数据库不会自行注册,并且如果侦听器启动,它不会查找可能会注册。)

ORA-12505意味着监听者知道该数据库,但监听者没有收到数据库通知数据库已启动。(如果您尝试连接到错误的数据库,使用错误的SID,则会出现ORA-12154错误“TNS:无法解析指定的连接标识符”。)

服务管理单元中运行了哪些Oracle服务?(从“控制面板”>“管理工具”>“服务”或者“开始”>“运行”中打开此项services.msc)。需要运行服务OracleServiceXE和OracleXETNSListener。

如果服务都已启动,你可以在命令提示符下使用以下任何一种方式连接到SQL * Plus中的数据库吗?(我假设你在安装了Oracle XE的计算机上运行这些程序。)

sqlplus系统/ 
sqlplus系统/ 
sqlplus / as sysdba

(用system-password安装Oracle XE期间为SYS和SYSTEM用户设置的密码替换。)

这三个中的第一个通过TNS侦听器连接,但第二个不通过侦听器直接连接到数据库,只在与数据库位于同一台计算机上时才起作用。如果第一个失败但其他两个成功,则JDBC连接也将失败。如果是这样,请使用其他两个连接到数据库并运行ALTER SYSTEM REGISTER。然后退出SQL * Plus并再次尝试第一个表单。

如果第三个失败,但第二个失败,请将您的用户帐户添加到ora_dba组。在控制面板>计算机管理>本地用户和组中执行此操作。

一旦你可以获得表单的连接

sqlplus系统/ 

要工作,你应该能够通过JDBC连接到Oracle XE。(顺便说一句,你没有向我们展示你用来连接数据库的JDBC代码,但我会怀疑它很可能是正确的;如果连接字符串的某些部分出错,则会出现各种其他错误。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档