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

Oracle SQL Developer未与tnsnames.ora中定义的SID连接,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,我的tnsnames.ora如下所示: ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) ) ORCL = (DESCRIPTION =

我的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)
    )
  )**
但当我尝试使用SQLDeveloper进行如下连接时,我得到了一个错误:没有更多的数据可以从套接字读取

角色:SYSDBA 连接类型:基本

主机名:localhost 港口:1521 SID:CLRExtProc

你能告诉我我做错了什么吗?我可以使用service_名称进行连接,或者在SID中使用service name时进行连接,但是为什么在使用tnsnames.ora中定义的SID时连接不起作用呢

根据我的理解,SID对应于数据库的实例名。无法使用它进行连接吗

致以最良好的祝愿,
Harshit

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

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

在您的情况下,似乎没有域,SID和服务名称是相同的。如果您想使用SID从SQL Developer进行连接,请使用
orcl
。我不知道你为什么要用它来代替服务名


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

您应该提供
orcl
作为SID;为什么要使用
CLRExtProc
?是的,当我提供orcl作为SID时,我可以连接。但那不是服务名称吗?如果是这样,SID和服务名称是否相同?另外,由于tnsnames.ora将SID显示为CLRExtProc,这意味着什么?感谢您的回答和建议。我是Oracle的新手,只是在本地数据库上试用而已。这很有帮助!