【问题标题】:ORA-12505, TNS:listener does not currently know of SID given in connect desORA-12505, TNS:listener 目前不知道连接 des 中给出的 SID
【发布时间】:2014-06-06 06:13:34
【问题描述】:

请帮助我,因为我刚刚安装了 Oracle 11g,但无法使用 SQL Devloper 使用以下设置进行连接:

用户名:系统

密码:我的密码

主机名:本地主机

端口:1521

SID:XE

错误信息:

状态:失败 - 测试失败:侦听器拒绝连接并出现以下错误:

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

我检查了 Windows 服务:

OracleServiceXE:已启动

OracleXETNSListener:已启动

我也无法连接到管理页面:**http://localhost:8080/apex/f?p=4950**

显示“此页面无法显示”

我还测试了使用 SqlPlus 进行连接:

测试 1:结果为 ORA-12170:TNS:发生连接超时

C:\oraclexe\app\oracle\product\11.2.0\server\bin>sqlplus.exe system/mypassword@XE

SQL*Plus:2014 年 4 月 22 日星期二 11:22:31 发布 11.2.0.2.0 生产版 版权所有 (c) 1982, 2010, Oracle。保留所有权利。

错误: ORA-12170: TNS: 发生连接超时

输入用户名:

测试 2:结果成功

C:\oraclexe\app\oracle\product\11.2.0\server\bin>sqlplus.exe system/mypassword

SQL*Plus:2014 年 4 月 22 日星期二 11:33:22 发布 11.2.0.2.0 生产版 版权所有 (c) 1982, 2010, Oracle。保留所有权利。

连接到: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 生产

SQL>

测试 3:结果成功

C:\oraclexe\app\oracle\product\11.2.0\server\bin>sqlplus.exe / as sysdba

SQL*Plus:2014 年 4 月 22 日星期二 11:34:29 发布 11.2.0.2.0 生产版 版权所有 (c) 1982, 2010, Oracle。保留所有权利。

连接到: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 生产

SQL>

Listener.log

22-APR-2014 11:53:51 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=SQL Developer)(HOST=__jdbc__)(USER=admin))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=50010)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor

tnsnames.ora:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = NASAYAO2)(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> 状态

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 32-bit Windows: Version 11.2.0.2.0 - Produ
ction
Start Date                22-APR-2014 14:29:22
Uptime                    0 days 0 hr. 56 min. 43 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\a
dmin\listener.ora
Listener Log File         C:\oraclexe\app\oracle\diag\tnslsnr\NASAYAO2\listener\
alert\log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=NASAYAO2)(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...
The command completed successfully

请帮帮我。

【问题讨论】:

  • 对于“测试 1”,您的 tnsnames.ora 中如何定义 XE?如果它超时,那么听起来它指向不同的 IP 地址。对于 SQL Developer,数据库是否已向侦听器注册? lsnrctl status 显示什么?默认情况下,它通常希望在服务器的外部 IP 地址上注册一个 istener,而不是 localhost。
  • 嗨,Alex Poole,我在我的问题中添加了您对我的建议。请看我上面的更新。谢谢。
  • 这一切都在一台机器(PC)上,还是客户端和服务器在不同的机器上?这一切似乎都是一个;但是主机名NASAYA02 解析到什么IP 地址? 似乎解析为 127.0.0.1 但这有点奇怪,而且行为也很奇怪。基本上看起来像this,但有额外的 IP 混淆。如果这解析为不同的 IP,您是否运行了防火墙?您希望人们能够从其他地方的其他客户联系吗?
  • 嗨@AlexPoole。感谢您的回复。是的,这是同一台机器。 NASAYAO2 实际上是我的本地计算机,因此它解析为 127.0.0.1。我的意图是只在我的本地计算机上设置一个开发数据库。谢谢。
  • 那么,如果您将所有内容(尤其是 listener.oratnsnames.ora)设置为使用 localhost 而不是您的机器名称,那么您可能需要强制DB 通过local_listener 参数注册。但是超时和 APEX 问题听起来仍然像是有时正在使用另一个 IP。也许 DNS 将其解析为其他内容,与您的 hosts 文件中的内容不同?

标签: database oracle oracle11g oracle-sqldeveloper sqlplus


【解决方案1】:

我有同样的问题,但我在 oracle linux 上运行。 经过搜索和测试,我可以将sqldeveloper连接到我的oracle11g,而无需设置我的listener.ora或其他

这是我在终端 sql 上运行的语法

alter system set LOCAL_LISTENER='(DESCRIPTION_LIST =  (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))))';

然后

alter system register;

我得到了教程 here

【讨论】:

  • 感谢您的解决方案。它真的节省了我即将浪费的时间:)
  • 为我工作。非常感谢
【解决方案2】:
  1. 打开网络管理器。在 Oracle Net Configuration 中,打开 Local,然后打开 Listeners
  2. 选择您的听众。
  3. 在右上角的 ComboBox 中,选择 Database Services
  4. 点击添加数据库
  5. 填写 3 个字段:全局数据库名称(即 ORCL.NET。在 SQL Plus 中键入 SELECT * FROM GLOBAL_NAME),Oracle 主目录(即 C:\app\User\product\11.2.0\dbhome_1)和 SID(即 orcl)
  6. 文件 > 保存网络配置。
  7. 重新启动 OracleOraDb11g_home1TNSListener 服务。

【讨论】:

  • 为什么随机重启后会出现这种情况?突然监听器无法启动。
【解决方案3】:

对于 SQL Developer 可能需要添加这些参数

AddVMOption -Duser.language=en

AddVMOption -Duser.region=US

在文件中

$SQLDEVELOPER_HOME\sqldeveloper\bin\sqldeveloper.conf

【讨论】:

    【解决方案4】:

    当我在连接到数据库时突然关闭系统时发生在​​我身上。重启系统就行了。

    【讨论】:

      【解决方案5】:

      您确定数据库名称是 XE 吗?

      你知道你在安装 11g 时给数据库/实例起什么名字吗?

      通常默认名称是 ORCL。

      尝试将 Sid 名称更改为 ORCL 并进行测试。

      【讨论】:

        【解决方案6】:

        如果你仍然得到这个 错误信息:

        状态:失败 - 测试失败:侦听器拒绝连接并出现以下错误:

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

        执行以下步骤: 1.打开cmd提示符。 2. c:/services.msc 3. 一旦你检查了它的OracleServiceXE状态,它就会导航到系统服务控制台。 4.然后启动服务状态(右键>启动)等到状态显示正在运行。

        【讨论】:

          【解决方案7】:

          如果你使用的是 oracle 11g 企业版,那就做一件事, 你只需卸载它,然后重新安装oracle 11g。 仔细执行所有步骤。 安装完成时, 然后去开始菜单-oracle 11g-配置&迁移工具-数据库配置帮助。 打开这个并再次进行配置 在这里你会给出一个 sid 名称。 当您在 sql developer 而不是 xe 中创建连接时,将使用该 sid。 除了上面这个不要改变其他。 我希望它一定会奏效。

          【讨论】:

            猜你喜欢
            • 2013-02-10
            • 2015-03-01
            • 2019-04-02
            • 1970-01-01
            • 2011-08-05
            • 1970-01-01
            • 2021-12-30
            • 2018-01-11
            • 2014-05-11
            相关资源
            最近更新 更多