Oracle 11g客户端是否需要ODP.NET?

hgb9j2n6  于 2022-11-28  发布在  Oracle
关注(0)|答案(6)|浏览(129)

我可能在这里问错了问题,如果是这样的话,我愿意改变它。
我有一个使用Microsoft.NET Oracle提供程序的项目(我们的计划是改为ODP,但我们还没有这样做)。
我试图让这个项目在windows 2008(x64)build服务器上构建。它构建得很好,但是我们的单元测试在遇到Oracle数据库上的东西时失败了。
我最初安装的是32位oracle 9i客户端,这是我们目前在winxp开发环境和以前的2003 build服务器上使用的客户端。尝试加载Oracle客户端库时引发了BadImageFormatException。在安装了32位Oracle客户端组件的64位模式下运行时将出现此问题。
我们尝试编译到x86平台,但没有更改错误消息。
我现在安装了11g 64位客户端,但我收到一条消息,说System.Data.OracleClient需要Oracle客户端软件版本8. 1. 7或更高版本。
那么,我应该使用哪种Oracle安装呢?

编辑:

我能够让这个工作。原来是测试导致了问题,通过强制NUnit在32位模式下运行:Link我能够让测试工作使用旧的32位驱动程序。这将是一个蹩脚的答案的问题,所以我不使用它,但会很高兴地奖励正确的答案,任何人把一些好的信息过渡到Oracle 64位驱动程序。

yr9zkbsy

yr9zkbsy1#

对于Oracle,我喜欢使用Oracle Instant Client

  • 你不需要在目标机器上安装任何东西(包括dev box!)。
  • 您可以确保您的应用程序将与您选择的特定客户端一起运行。
  • 您甚至可以轻松地让多个应用程序在同一台计算机上使用不同的客户端版本。
  • 作为一个缺点,它给您的应用程序增加了很大的重量(最小~ 19 Mb)。

查看将C#连接到Oracle数据库所需的最小客户端占用空间是多少?以了解更多信息。要了解如何设置一个在x86和x64计算机上都能工作的Visual Studio项目,请查看我的博客文章Oracle Instant Client in Visual Studio

bvjxkvbb

bvjxkvbb2#

我添加了一个新的答案,因为自今年秋天(2012年)起,ODP托管代码测试版已经推出。请参阅this link了解更多信息。它对我们来说非常稳定,我们正在生产中使用它,主要原因如下:

  • 无需安装(实体框架需要简单注册除外)
  • 它比非托管版本小,占用空间约为6 MB。
  • 它不是“位敏感”的,即任何CPU最终都将与ODP一起工作:)
  • 更直观地MapC#类型和<->Oracle类型(它解决了EF和从数据库生成模型的一些问题)
  • 支持EZCONNECT(所有版本的非托管ODP没有),即没有更多的tnsnames.ora麻烦.

但要转换到64位,请下载托管ODP驱动程序,并将Oracle.DataAccess引用更改为Oracle.ManagedDataAccess,然后重新编译:)

bjp0bcyl

bjp0bcyl3#

我认为消息 “System.Data.OracleClient需要Oracle客户端软件版本8.1.7或更高版本” 类似于 “Oracle客户端未安装、已安装但未找到或已安装但需要8.1.7或更高版本”
检查注册表编辑器上的值是否位于注册表项下:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraOdac11g_home1

其中OraOdac11g_home1取决于安装的Oracle主目录名。
此外,尝试通过Visual Studio连接,看看是否可能。

flvlnr44

flvlnr444#

我有一个问题,可能与你所看到的有关。
我最初在计算机上只安装了Oracle 10 g客户端,.Net Oracle.DataAccess组件版本号是10.2.0.100-这是针对.Net运行时v1.0.3705的
我安装了ODP .NET,Oracle.DataAccess组件版本现在是v2.102.2.20,并在.Net运行时v2.0.50727上运行-我找不到Oracle为什么这样做的参考-这与使版本号与运行时版本一致有关
我花了一天的时间来解决这个问题。我们还没有使用11 g客户端,我也很久没有使用8i客户端了,所以我不知道这些客户端的版本号是什么,但如果我是你的话,我会检查一下。
简而言之,Oracle回溯了组件版本号,这可能会使您的11 g组件显得过时,而不是Oracle 8i组件

lhcgjxsq

lhcgjxsq5#

我多次发现错误“需要Oracle客户端软件版本8.1.7或更高版本”是一个众所周知的误导性错误。从遥远的记忆中,我似乎记得这通常表示文件IO权限问题。我认为这可能是ASP.NET工作进程(或应用程序运行所使用的任何身份)需要对Oracle客户端文件夹层次结构中的文件夹具有某种读或写权限...

oyjwcjzk

oyjwcjzk6#

这可能是环境中存在多个Oracle主目录的原因。请删除构建系统中的旧版本Oracle主目录。尝试使用单个主目录重新生成构建。9 i版本ODP.NET和10 G/11 G连接存在一些问题

相关问题