【问题标题】:SQL Developer does not connect with SID as defined in tnsnames.oraSQL Developer 未与 tnsnames.ora 中定义的 SID 连接
【发布时间】:2015-08-30 08:35:44
【问题描述】:

我的 tnsnames.ora 看起来像这样:

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )**

但是当我尝试使用 SQL Developer 进行如下连接时,出现错误:没有更多数据可以从套接字读取。

角色:SYSDBA 连接类型:基本

主机名:本地主机 端口:1521 SID:CLRextProc

你能告诉我我做错了什么吗?我可以使用 service_name 连接,或者在 SID 中使用服务名称时,但是为什么我使用 tnsnames.ora 中定义的 SID 时它不起作用。

据我了解,SID 对应于数据库的实例名称。是不是不能用它连接?

最好的问候, 粗制滥造

【问题讨论】:

  • 您应该提供 orcl 作为 SID;你为什么用CLRExtProc
  • 是的,当我提供 orcl 作为 SID 时,我可以连接。但这不是服务名称吗?如果是这样,SID 和服务名称是否相同?另外,由于 tnsnames.ora 将 SID 显示为 CLRExtProc,这意味着什么?

标签: oracle oracle-sqldeveloper


【解决方案1】:

tnsnames.ora 中的 CLRExtProc 条目用于external processes。这不是您用于正常客户端连接的数据库 SID。

ORCL 条目被定义为使用服务名orcl。服务名称和 SID 可能相同也可能不同。数据库实例只有一个 SID,而它可以有多个服务名称,其中可能包括一个域。

在您的情况下,似乎没有域,并且 SID 和服务名称相同。如果要使用 SID 从 SQL Developer 连接,请使用 orcl。我不确定你为什么要使用它而不是服务名称。 Read more about accessing the database.

您还连接了 AS SYSDBA,可能是 SYS,这不是您应该经常做的事情。希望您不是在内置模式下创建对象;创建您自己的用户/模式并在其下执行所有操作。

【讨论】:

  • 感谢您的回答和建议。我是 Oracle 的新手,只是在我的本地数据库上尝试一些东西。这很有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 2021-01-27
  • 2014-07-10
  • 1970-01-01
  • 2018-06-04
  • 2023-04-04
相关资源
最近更新 更多