在使用sql中的链接服务器连接和外部oracle db
时,我收到以下错误Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "xxxx".
OLE DB provider "OraOLEDB.Oracle" for linked server "xxx" returned message "ORA-12638: Credential retrieval failed".
我有这个问题大约4次出5次。所以它有时只能起作用。
在我的情况下,测试和live oracle DB(外部)在具有不同SID / db实例的同一物理服务器上。
使用OraOLEDB的测试连接始终如一,它是解决问题的实时链接服务器。
同样从等式中取出网络我尝试从我们的测试环境连接oracle live和从我们的live连接oracle测试。连接到oracle测试工作正常,无论如何都没有。
我可以使用用于实时链接服务器的实时登录凭据连接到面向外部Oracle数据库的应用程序。所以对我来说,登录帐户是不可能的。
问题1 : - 有没有其他方法可以通过sql或C#连接外部Oracle数据库?
我使用了如下的openrowset并收到错误:
SELECT *
FROM OPENROWSET('OraOLEDB.Oracle', 'Data Source=external_Oracle_serverIP;Initial Catalog=bbinstance;User id=xxx; Password=xx;',
'SELECT * FROM dbname')
我收到以下错误
OLE DB provider "OraOLEDB.Oracle" for linked server "(null)" returned message "ORA-12560: TNS:protocol adapter error". Msg 7303, Level 16, State 1, Line 1 Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "(null)".
问题2 :上面我做错了什么?
答案 0 :(得分:0)
当我遇到此问题时,由于sqlnet.ora中的以下行:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
这会导致Oracle尝试使用Windows Native Authentication Services。
如果Oracle无法通过此方法进行身份验证,您将收到12638错误。要进行故障排除,请将此行更改为
SQLNET.AUTHENTICATION_SERVICES= (NONE)
并将测试重复到实时数据库。
答案 1 :(得分:0)
Oracle 12c及更高版本: 有时,在不同的根数据库下运行的2个Oracle Pluggable DB服务有可能在同一个侦听器下运行而造成这种混乱。检查并停止(如果不是Prod)不需要的PDB,然后尝试连接到所需的DB。