【问题标题】:oracle unable to access DB linkoracle 无法访问数据库链接
【发布时间】:2015-03-17 08:48:00
【问题描述】:

我有一个指向远程 oracle 数据库的数据库链接,其创建脚本是

Create Database Link "DB_LINK_NAME"
  CONNECT TO "SOURCE_SCHEMA" IDENTIFIED BY VALUES 'XXXXXX' USING 'DB00001';

但我尝试使用

访问数据库链接
select * from dual@DB_LINK_NAME 

我收到错误ORA-12154: TNS:could not resolve the connect identifier specified

我可以成功地做到tnsping 到'DB00001'

我在 sqldeveloper 和 Sqlplus 中都试过了

【问题讨论】:

  • 将详细信息添加到tnsnames.ora 文件。看我的回答。

标签: database oracle11g sqlplus


【解决方案1】:

您需要将详细信息添加到本地 tnsnames.ora 文件中。

例如,

DB00001 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL=TCP)(HOST=hostname)(PORT=port))
    (CONNECT_DATA = 
      (SERVER=DEDICATED)
      (SERVICE_NAME=service_name)
    )
  )

原因通常描述为-

请求与数据库或其他服务的连接使用 连接标识符,并且指定的连接标识符不能 使用其中一种命名方法解析为连接描述符 配置。例如,如果使用的连接标识符类型是 网络服务名称,则网络服务名称无法在 命名方法存储库,或存储库不能 找到或到达。

【讨论】:

  • TNSNAMES 是否作为选项添加到 SQLNET.ORA 文件的 NAMES.DIRECTORY_PATH 中?
  • 是的。它被添加。当我执行 tnsping 时,我得到使用的参数文件:D:\oracle\product\11.2.0\client_1\network\admin\sqlnet.ora。我的 Tnsnames.ora 也在同一目录中
  • 您需要将它添加到您的服务器 tnsnames.ora,不是您的客户端tnsnames.ora。或者(如果您无权访问您的服务器 tnsnames.ora),您可以使用 EZConnect 语法添加直接连接字符串。
  • 要添加到@FrankSchmitt,请确保 SQLNET.ORA 中的目录路径具有 EZCONNECT 条目。
【解决方案2】:

我相信问题出在本地 tnsnames.ora 上。作为一种解决方法,按如下方式创建数据库链接:

Create Database Link "DB_LINK_NAME"
  CONNECT TO "SOURCE_SCHEMA" IDENTIFIED BY VALUES 'XXXXXX' USING '(DESCRIPTION =
    (ADDRESS = (PROTOCOL=TCP)(HOST=hostname)(PORT=port))
    (CONNECT_DATA = 
      (SERVER=DEDICATED)
      (SERVICE_NAME=service_name)
    )
  )';

告诉我进展如何。

【讨论】:

  • 我也是这样做的——根本不需要编辑 tnsnames.ora。
  • 弗兰克,感谢您的验证。这种方法对我也一直有效。
猜你喜欢
  • 2022-10-16
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 2019-06-06
  • 1970-01-01
相关资源
最近更新 更多