![Oracle Ordcom 与 Wallet 共存问题](https://linux22.com/image/506960/Oracle%20Ordcom%20%E4%B8%8E%20Wallet%20%E5%85%B1%E5%AD%98%E9%97%AE%E9%A2%98.png)
我们在 11.1.0.7 数据库上使用 Oracle 的 ORDCOM 基础架构与 COM 对象进行交互。COM 对象不会对数据库执行任何操作。此过程已经运行良好好几年了。
今天我创建了一个 Oracle Wallet 并添加了 sys 的凭据,以便我的脚本可以使用“/@coredev as sysdba”登录,而不是以明文形式存储用户名和密码。
问题是,当我将“SQLNET.WALLET_OVERRIDE = TRUE”行添加到 sqlnet.ora 文件后,ORDCOM OACreate 调用会引发 ORA-28578:从外部过程回调期间出现协议错误。我有一个数据库外部的程序可以测试 COM 对象,并且它继续正常工作。当我注释掉 sqlnet.ora 中的行后,一切都正常工作,但我当然不能再使用 Wallet 了。
答案1
Oracle 使用内部测试案例重现了此问题,并为此创建了一个错误。解决方法是使用单独的 sqlnet.ora/tnsnames.ora 为钱包设置 TNS_ADMIN 环境变量以将其设置为备用文件的路径。