【问题标题】:Linked Server Test Connection Not Working (SQL Server to Oracle Database)链接服务器测试连接不工作(SQL Server 到 Oracle 数据库)
【发布时间】:2021-06-28 10:29:54
【问题描述】:

数据库版本: SSMS:17.9, 甲骨文:19.3

我们正在尝试建立与使用 SSL 的生产 Oracle 数据库(由另一个团队托管)的链接服务器连接。 LS 已创建,但我们的测试连接尝试总是返回:

Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "CDWRP201_TCPS". OLE DB provider "OraOLEDB.Oracle" for linked server "CDWRP201_TCPS" returned message "Error while trying to retrieve text for error ORA-28759". (Microsoft SQL Server, Error: 7303)

我读到这意味着“无法打开文件”,可能是由于钱包权限不足造成的,因此我为我们的用户提供了对文件的完全访问权限(不确定是否推荐这样做)。我对电子钱包、ORA 文件,甚至它们的父文件夹也做了同样的事情,但仍然没有成功。

奇怪的是,测试连接适用于我们的非 SSL 连接,它们使用相同的 tnsnames.ora 文件。使用tnspingsqlplus 连接到Oracle DB 也没有问题。

我正在为此苦苦挣扎,因为我在使用 Oracle 和 SSMS 链接服务器方面的经验很少甚至没有,而且我感觉自己已经走到了死胡同。您可以提供的任何方向将不胜感激。如果需要,我很乐意提供更多详细信息。

非常感谢。

【问题讨论】:

  • 使用了哪些选项来创建钱包?客户端 sqlnet.ora 中的WALLET_LOCATION 值是什么? TNS_ADMIN 环境变量是否设置为包含启动连接的用户或服务帐户的 sqlnet.ora 和 tnsnames.ora 目录的路径?
  • 嗨@pmdba,1. 我们使用orapki 创建钱包并在创建过程中包含-auto_login_local 参数。 2. Wallet_Location 在 C:\app\oracle\wallet 中,它是在 #1 之前创建的。 3. 我们没有TNS_ADMIN 环境变量。指示 Oracle 的唯一变量是我们的 PATH,而保存的值是 C:\Oracle\x64\product\19.0.0\client_64\bin。希望这会有所帮助。
  • 首先尝试使用-auto_login 选项而不是-auto_login_local 重新创建钱包。有时该选项在 Windows 上效果不佳。
  • 嗨@pmdba,感谢您的建议。我尝试了这个并使用-auto_login 创建了一个新钱包 + 更改了 sqlnet 和 tnsnames 中的钱包位置。仍然遇到同样的问题。

标签: sql-server oracle linked-server


【解决方案1】:

你实际上有两个问题。

首先,您对 oracle 的调用返回 ORA-28795。正如其他人所关注的那样,这是由于未能打开钱包造成的。然而,与其寻找权限问题,我会注意到第二个错误......

尝试检索错误文本时出错”表示您的 ORACLE_HOME(对于正在使用我的 msssql 的 oracle 客户端)未正确设置。当调用收到 ORA-28759 时,它需要找到错误消息文件才能正确报告它。但是由于 ORACLE_HOME 不正确,它无法找到消息文件。

而且很可能无效的 ORACLE_HOME 也是 ORA-28759 的根本原因。我对钱包没有太多的经验,但它需要 ORACLE_HOME 来定位钱包似乎是合理的,就像它需要它来定位消息文件......以及一堆其他东西一样。无论如何,正确设置 ORACLE_HOME,您将在 ORA-28795 上获得更多信息性诊断/错误消息。

您自己说过“唯一指示 Oracle 的变量是我们的 PATH”。您还需要设置 ORACLE_HOME。如果你的 oracle PATH 是 'C:\Oracle\x64\product\19.0.0\client_64\bin',那么你的 ORACLE_HOME 应该是 'C:\Oracle\x64\product\19.0.0\client_64'

【讨论】:

  • 您好,埃德,感谢您的回复。当我检查我们的系统变量时,我首先想到可能是因为我们一开始没有设置 ORACLE_HOME,所以我们收到了这个错误。但是添加后情况还是一样。
  • “保持不变”?您是否仍然收到“尝试检索错误文本时出错”?如果是这样,那么您仍然没有正确设置 ORACLE_HOME。
猜你喜欢
  • 1970-01-01
  • 2011-09-01
  • 2021-08-15
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 2021-08-09
相关资源
最近更新 更多