【发布时间】: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 文件。使用tnsping 和sqlplus 连接到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