【问题标题】:Able to connect to Databse using TNS alias but NOT using service name能够使用 TNS 别名连接到数据库,但不能使用服务名称
【发布时间】:2019-01-10 02:54:18
【问题描述】:

我正在尝试使用 TNS 连接到数据库,并且我能够使用别名成功连接:

sqlplus user/password@UHKGLXXX

但是,当我使用服务名称连接到同一个数据库时,我收到以下错误:

sqlplus user/password@pl0676o.hk.bbc:2006/UHKGLXXX.hk.bbc

ORA-12514: TNS:listener 目前不知道连接描述符中请求的服务

有人可以帮我解决这个问题吗?

下面是 TNSNAMES 条目:

UHKGLXXX =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = pl0676o.hk.bbc)(PORT = 2006))
    )
    (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = UHKGLXXX.hk.bbc)
    )
  )

LISTENER_UHKGLXXX = (ADDRESS = (PROTOCOL = TCP)(HOST = pl0676o.hk.bbc)(PORT = 2006))

【问题讨论】:

  • 您的tnsnames.ora 文件中的DBNAME 条目是什么?是使用 SID 还是服务名称?如果后者与您尝试使用简单连接语法的那个相同? lsnrctl services 在 DB 服务器上显示哪些服务?
  • @AlexPoole tnsnames.ora 中的 DBname 是 UHGLMX1。它正在使用服务名称。另外,我在连接时尝试使用相同的服务名称。而且,我无权运行 lsnrctl services 命令。 :(
  • 嗯,tnsnames.ora 条目中的内容与您在命令行中使用的内容有所不同。 (或者您正在查看错误的文件 *8-)由于我们看不到所涉及的实际值,因此我们无法发现是否只是一个简单的错误或拼写错误。
  • @AlexPoole 我已经编辑了问题以包含 TNSNAMES 的内容:-)
  • 好的,如果@UHKGLXXX 可以,那么@pl0676o.hk.bbc:2006/UHKGLXXX.hk.bbc 应该可以工作。你确定这就是你实际使用的吗?

标签: oracle sqlplus oracle12c tnsnames


【解决方案1】:

看看你的 sqlnet.ora 文件。

可能包含:

NAMES.DIRECTORY_PATH = (TNSNAMES)

这仅允许使用 TNSNAMES 别名。

将其更改为:

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

【讨论】:

  • 嗨 Rene,sqlnet.ora 文件已经具有上述格式:SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
猜你喜欢
  • 2013-03-27
  • 1970-01-01
  • 2012-08-15
  • 2019-08-21
  • 1970-01-01
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多