C# ODAC 12c第2版(12.1.0.1.2)Xcopy与Oracle 11g R2数据库的兼容性

C# ODAC 12c第2版(12.1.0.1.2)Xcopy与Oracle 11g R2数据库的兼容性,c#,oracle,oracle11g,odp.net,oracle12c,C#,Oracle,Oracle11g,Odp.net,Oracle12c,我正在尝试升级我的C#项目,以使用最新的ODAC 12c版本,我下载了ODAC 12.1 xcopy for Windows。安装很好,但问题是在我尝试执行单元测试时开始的 我的测试用例在connection.Open()上失败。样本如下: OracleConnection con = new OracleConnection(); con.ConnectionString = @"User Id = test, Password = test; Data Source = test"; co

我正在尝试升级我的C#项目,以使用最新的ODAC 12c版本,我下载了ODAC 12.1 xcopy for Windows。安装很好,但问题是在我尝试执行单元测试时开始的

我的测试用例在
connection.Open()
上失败。样本如下:

OracleConnection con = new OracleConnection(); 
con.ConnectionString = @"User Id = test, Password = test; Data Source = test";
con.Open();
不幸的是,没有异常消息,堆栈跟踪也没有多大帮助:

结果堆栈跟踪:

at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck, Int32 isRecoverable)
   at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
   at Oracle.DataAccess.Client.OracleConnection.Open()
   at MyProgram.Program.GetDetails()
当我尝试调试时,在执行开始时弹出一个错误消息框,说明:在动态链接库oraons.dll中找不到过程ons_init_wconfig_ctx point的条目

我想知道是不是少了什么

Oracle数据库版本:11.2.0.3.0 Oracle客户端版本:11.2.0.3.0
ODAC版本:12.1.0.1.2

如果是非托管客户端,请尝试设置dllpath:

<configuration>
 <oracle.dataaccess.client>
   <add key="DllPath" value="C:\<your_xcopy_dir>\bin"/>
 </oracle.dataaccess.client>
</configuration> 

您可能正在从以前的oracle主页中拾取非托管DLL。通常情况下,我会看到一条“加载程序集失败”的消息,但12之后情况可能发生了变化。如果这确实解决了,而且你厌倦了处理“甲骨文家庭”,那么就考虑新的Oracle .MauldDATAccess .DLL。 无论如何,我不认为这是一个客户机/服务器兼容性问题

我遇到了与桌面应用程序相同的问题,即“在动态链接库oraons.dll中找不到过程ons_init_wconfig_ctx点的条目”

经过几天的努力,终于找到了解决办法。步骤如下:

  • 从PATH变量中删除不需要的oracle HOME,例如,我安装了32位和64位的ODAC 12
  • oraons.dll不在我的C:\app\client\mdas0004\product\12.1.0\client\u 1\bin中,因此我将dll从C:\app\client\mdas0004\product\12.1.0\client\u 1复制到bin文件夹中

  • 宾果开始工作。

    您是否捕获到异常?请这样做,并在内部找到ORA错误,让我们知道它是什么。您可能还可以将该路径添加到path环境变量,而不是复制到bin文件夹,正如xcopy自述文件所建议的那样。