SQL Developer不与tnsnames.ora中定义的SID连接

时间:2015-06-14 22:21:23

标签: oracle oracle-sqldeveloper

我的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 ConnectionType:Basic

HostName:localhost 港口:1521 SID:CLRExtProc

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

根据我的理解,SID对应于数据库的实例名称。是不是可以用它连接?

最诚挚的问候, Harshit

1 个答案:

答案 0 :(得分:0)

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

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

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

您也连接AS SYSDBA,可能是SYS,这不是您应该常规做的事情。希望您不是在内置架构下创建对象;创建自己的用户/架构,并在其下做所有事情。