我可以使用TNS样式的连接描述符成功地连接到数据库:
connect <user>/<pass>@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=<host>)(Port=<port>))(CONNECT_DATA=(SID=<sid>)));但当我试图像这样联系时:
connect <user>/<pass>@<host>:<port>/<sid>;我得到了ORA-12514: TNS:listener does not currently know of service requested in connect descriptor。
为什么第一个命令起作用,而第二个命令不起作用?
发布于 2014-09-26 11:19:19
SID和服务名称不是一回事。在您的工作版本中,您明确表示您正在使用CONNECT_DATA部件中的SID。
当您使用容易连接语法时
连接username@//host:port/service_name]/instance_name]输入密码:密码
..。您不是在提供SID;您实际上是在:
connect <user>/<pass>@<host>:<port>/<service_name>服务名称和SID可能是相同的,但由于您收到了该错误,在您的情况下,它们似乎不一样。如果您能够访问服务器,您可能可以运行lsnrctl services来查看哪些服务名称被识别。或者,如果您可以以用户身份以足够的权限进行连接,则可以查询:
select value from v$parameter where name = 'service_names';任何一种方法都可以报告多个服务名称,您可能可以使用任何方法。您可能有一个类似于<SID>.<domain>的,这可能是一个明显的选择。如果有疑问,尽管问你DBA,你应该使用哪一个。
https://stackoverflow.com/questions/26057058
复制相似问题