Windows64位环境下net访问Oracle解决方案.pdf
《Windows64位环境下net访问Oracle解决方案.pdf》由会员分享,可在线阅读,更多相关《Windows64位环境下net访问Oracle解决方案.pdf(6页珍藏版)》请在三一文库上搜索。
1、Windows64位环境下net 访问 Oracle 解决方案 目前, Windows操作系统可以分成两类,32 位和 64 位(64 位也区分 x86_64位和 Itanium),同时 Oracle客户端也做了同样的区分。 在安装和开发的过程中,经常会遇到一些问题,本文就总结了相关的解决方案 Oracle Instant Client的下载地址 http:/ 以下所有的说明都是基于Windows64位的(以 Windows2008为例) 1 解决方案(这是最终步骤,其他供参考) 1 安装 Oracle64位客户端( win64_11gR2_client): 下载页面: http:/ 4sof
2、t-094461.html 下载地址: http:/ 已经下载到常用软件win64_11gR2_client.zip 然后正常安装,并进行数据库连接的配置,比如tnsnames.ora 2 将 NetWork Service用户加入 Administraotr组中,重启计算机(重要) 3 新建 网站,配置程序的调试模式为使用IIS ,不要使用WebServer,这样就可以调试了 4 由于 Webserver是 32 位的程序,因此如果要使用webserver进行调试,可以考虑安装32 位的 Oracle 客户端(没有进行测试)。 注意:对于已经安装了32 位 Oracle客户端的情况,本次没有
3、测试 2 安装顺序 http:/ 安装 Oracle 11g Release 2 ODAC 11.2.0.1.2 with Oracle Developer Tools for Visual Studio, 配置服务器tnsnames,使用 SQLPLUS 测试成功连接。 启动 IIS ,发布 .NET 连接 ORACLE的应用,测试,报“System.Data.OracleClient 需要 Oracle 客户 端软件 8.1.7 或更高版本 “错误。解决:将ORACLE 安装目录为Network Service用户赋读和执行权, 并传递到所有子目录。 重启动 IIS ,报 “ 尝试加载Or
4、acle 客户端库时引发BadImageFormatException。如果在安装32 位 Oracle 客户端组件的情况下以64 位模式运行,将出现此问题。” 解决: 下载并解压instantclient_11_2 的 X64 版本,放到ORACLE 安装目录下,并在PATH 路径中搜索在前。 重启动 IIS ,报 “ORA-12154: TNS:could not resolve the connect identifier specified” 错误。解决: 指定环境变量TNS_ADMIN到 tnsnames.ora所在目录。 重启动 IIS ,.NET 应用连接数据库服务器成功。 3
5、在 中,不用使用Webdev进行调试,必须使用IIS 调试 http:/ 我们平时使用的都是32 位的机器进行开发, 装的都是32 位的软件, 但是我们的服务器一般都是64 位的, 所以有时也需要在64 位的环境下装一个VS 调试程序。 最近遇到的一个问题就是一个同事换了一个电脑, 用的是 X64 的 Windows 2008作为操作系统, 要进行 Oracle的数据库连接, 所以也装了64 位的 Oracle 客户端。如果是控制应用项目或者WinForm项目可以正常连接Oracle ,但是 Web 项目在程序中打开 Oracle连接时,系统抛出了异常: 尝试加载Oracle 客户端库时引发B
6、adImageFormatException。如果在安装32 位 Oracle 客户端 组件的情况下以64 位模式运行,将出现此问题。 显然,这个提示的不正确,因为我们装的就是64 位的客户端,所以并不存在64 位程序调用32 位客户端 的情况。难道是生成的程序是32 位的,然后 32 位调用了64 位的客户端,于是我把程序属性中的生成平 台改为 X64 ,如图所示: 结果这样生成的WebService程序在调用时还是报同样的异常。这个问题困扰了我一天,其中想到的解决 办法就是把64 位的客户端卸载了,在X64 的操作系统中安装32 位的客户端,然后这样就可以了,但是 如果不是 Web应用(比
7、如控制台应用程序或者WinForm程 序)却同样报错,那就需要将非Web应用 的项目按照上图的设置方法,将生成的平台改为X86 才能正常运行。 解决办法: 这当然是一个折中的办法,今天终于发现了真正的原因,原来 VS 在建 Web项目时, 平时运行使用的是自 带的 WebDev.WebServier是一个 32 位的服务, 所以在其中运行的Web 项目不管怎么设置平台,都只 能作为 32 位的应用来看待,所以在Web项目 运行时连接 64 位的 Oracle客户端会报错,而非Web项 目就不会。 网上搜了一下,好像WeDev服务好像没有64 位的,所以要解决这个问题,那么就不要使用这个服务作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows64 环境 net 访问 Oracle 解决方案
链接地址:https://www.31doc.com/p-4741612.html