我们在我们的11.1.0.7数据库上使用Oracle的ORDCOM基础设施与COM对象进行交互。 COM对象不会对数据库做任何事情。 这个过程已经好几年了。
今天,我创build了一个Oracle Wallet,并为sys添加了凭据,以便我可以使用“/ @ coredev as sysdba”login脚本,而不是以明文forms存储用户名和密码。
问题是,只要我将“SQLNET.WALLET_OVERRIDE = TRUE”行添加到sqlnet.ora文件,ORDCOM OACreate调用会在外部过程的callback过程中引发ORA-28578:协议错误。 我有一个数据库以外的程序可以testingCOM对象,并继续正常工作。 只要我在sqlnet.ora中注释掉这一行,它就可以正常工作,但我当然不能再使用钱包了。
Oracle通过一个内部的testing用例转载了这个问题,并为此创build了一个bug。 解决方法是使用单独的sqlnet.ora / tnsnames.ora作为钱包,将TNS_ADMIN环境variables设置为备用文件的path。