我的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
答案 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,这不是您应该常规做的事情。希望您不是在内置架构下创建对象;创建自己的用户/架构,并在其下做所有事情。