【问题标题】:How do I solve error 12505 in Oracle SQL?如何解决 Oracle SQL 中的错误 12505?
【发布时间】:2020-05-19 13:22:05
【问题描述】:

我是一名编程专业的学生,​​刚开始学习数据库和 SQL。当我尝试连接到 SQL Developer 中的数据库时,它说

ORA-12505,TNS:listener 当前不知道连接描述符中给出的 SID。

我尝试将它安装在家里的 PC 塔上,一切正常,只是无法在我的笔记本电脑上使用。连老师都说他帮不了我,因为他不知道该怎么做,所以我在这里尝试,因为我真的不知道该怎么做。

我多次尝试卸载和重新安装数据库,并确保每个 Oracle 服务都在运行。我的 SID 设置为 XE。我的连接设置为基本。主机是'localhost',端口是'1521',SID 是'xe'

这是 tnsnames.ora 文件

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-62JIG0N)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
      (SID = CLRExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 

这是 lsnrctl status 在 cmd 中的输出

STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 64-bit Windows: Version 11.2.0.2.0 - Production
Start Date                03-F╔VR.-2020 12:04:38
Uptime                    0 days 4 hr. 53 min. 38 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Default Service           XE
Listener Parameter File   C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\listener.ora
Listener Log File         C:\oraclexe\app\oracle\diag\tnslsnr\DESKTOP-62JIG0N\listener\alert\log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DESKTOP-62JIG0N)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...

这是 listener.ora 文件

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-62JIG0N)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

【问题讨论】:

  • 嗨,欢迎来到 StackOverflow。请告诉我们您之前尝试过的内容,并查看此链接:stackoverflow.com/questions/23209962/…
  • 并且您的数据库连接的 SID 设置为 XE?
  • 您已经展示了tnsnames.ora 文件,该文件描述了XE 的面向服务的连接。从您的lsnrctl status 输出中,您的listener.ora 文件中没有名为XE 的服务。您应该显示您的 listener.ora 文件。还将您的评论信息(来自下面的答案)放入您的帖子中。

标签: oracle


【解决方案1】:

您的 SQL Dev 连接属性的“连接”类型是什么? (基本?TNS?)错误消息(“NS:listener 目前不知道 SID”)之间存在不一致,而您的 tnsnames 表示通过服务名称而不是 SID 进行连接。这表明您的 SQL Dev 连接类型是 'basic' 。 . .它根本不使用 tnsnames.ora。由于您使用的是“基本”连接,因此您需要向我们展示使用的值。此外,由于是监听器抱怨他不知道您请求的 sid,因此您需要向我们显示命令 'lsnrctl status' 的输出,以便我们可以看到监听器 做了什么 em>知道。

这确实是一个非常基本的问题,因此您的讲师不知道如何解决这一事实让我对他是否有资格教授 任何涉及 oracle 的内容提出了很多疑问。 p>

【讨论】:

  • 我的连接设置为基本。主机是“localhost”,端口是“1521”,SID 是“xe”...我用 lsnrctl 的输出编辑了问题,因为输出太长了,因为我是初学者,所以我不知道'不知道如何解释输出
  • 好的,由于您的连接类型是“基本”,因此您的 tnsnames.ora 不用于此连接。至于 lsnrctl 的输出,请注意您的数据库“XE”没有条目。这表明您的数据库没有启动。
  • 哦,对了!以及如何手动启动数据库?我尝试在程序中单击“启动数据库”,但出现了 cmd,我不知道要执行什么命令。我已经看到我可以在“程序 > Oracle - HOME_NAME”中进入网络管理器,但我的程序列表中没有这个
  • 打开“services.msc”(Windows“服务”控制面板)。找到服务“OracleServiceXE”并确保它已启动。还要确保它设置为自动启动。
  • “OracleServiceXE”已在运行并设置为自动。我尝试重新启动它几次以及停止并重新启动它。这很奇怪
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-16
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多