尝试加载 Oracle 客户端库时引发 BadImageFormatException。问题记录

1公司电脑是win7 64位旗舰版,刚来时配的新电脑,4G+i5这个配置不装64位那算是浪费了。谁知道一切装完毕后,打开项目却连不上oracle数据了...
首先是pl/sql连不上,我在本地装了个oracle 11g r2 64位的。装了oracle服务器,应该是不用再装客户端,pl/sql应该就能连上的,应为oracle服务器版本自带了客户端的那些管理工具和功能。但是pl/sql一直报个错啊!大概意思是说找不到32位的oci.dll文件之类的错误,网上一搜,说pl/sql装在64位系统上,要连64位的数据库,还得装个32位的客户端。而我又不想再去装个客户端了,感觉太大了,再说装了oracle数据库,应该是不用再装客户端了的。无奈只好下了个IntantClient(轻量级客户端包)。下面说说这个IntantClient(轻量级客户端包)与传统的Oracle Client 的区别:

instanct client 分为几个包,其中basic基本只有oci库文件
 其它常见的包还有sqlplus,jdbc等,都运行于basic包之上。

http://www.oracle.com/technetwork/topics/winsoft-085727.html
 而
 Oracle Client不光包括instant client,还包括很多工具。

从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了.
这样一来,只要客户端下载Instant Client,直接解压,设置Path就ok了。
具体设置如下:
1、下载32位Oracle InstantClient
 2、将Oracle InstantClient解压到某目录
 3、打开PL/SQL,在perference里面设置OCI Library和Oracle_home,例子如下:
         OCI Library=D:\instantclient_11_2\oci.dll   (刚刚InstantClient的解压目录的OCI.DLL文件)
         Oracle_home=D:\instantclient_11_2     (刚刚InstantClient的解压目录)
 4、设置环境变量(修改NLS_LANG和TNS_ADMIN环境变量)
  对于NLS_LANG环境变量, 最好设置成和数据库端一致, 首先从数据库端查询字符集信息:
  SQL> select userenv('language') nls_lang from dual;
  NLS_LANG
  ----------------------------------------------------
  AMERICAN_AMERICA.ZHS16GBK
 
 右击"我的电脑" - "属性" - "高级" - "环境变量" - "系统环境变量":
  1>.点击"新建", 变量名设置为"TNS_ADMIN", 变量值设置为"D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN", 点击"确定";   (64位ORACLE的TNSNAME.ORA文件的目录)
  2>.点击"新建", 变量名设置为"NLS_LANG", 变量值设置为"AMERICAN_AMERICA.ZHS16GBK", 点击"确定";   (数据库字段集)
  最后点击"确定"退出.
 
至此,重新登陆PLSQL就可以用了

好。pl/sql 是可以登录了,但是咱asp.net程序还是连不上啊!到connection.open()的时候,就报:“尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。“。这个大概是说我asp.net 程序不应该是用32的客户端去访问64位的数据库,我是这样理解的。但是我装了64的oracle 不就相当宇装了64位的客户端吗?装的那个轻量级的32位客户端只是方便pl/sql来访问oralce数据库的。这个问题网上给出了很多回答。大多是,改项目的属性里的生成选项里的目标平台:改为x86.意识是把项目当成32位运行。每个项目都照着改了,还是不管用。网上还有说,把网站项目属性里的web项里的服务器改成iis不使用vs自带的web deleloper ment 服务,应为它的进程为webDe.webServer.exe 是一个32位的进程,反正说了很多。这个方法还是可以。你改完后,项目确实可以运行,并访问oracle64位数据库了。但是我个人总觉得这种方法很麻烦。而且这样你的本地iis里在你每建一个访问oracle数据的项目时,iis里就会多一个项目,而且这样也不稳定时常会报一些奇怪的错误。最后本来打算装回32位系统的,后边在网上逛逛,自己静下心来想想...
最后我发现是不是那个轻量级的包不行啊!最后还是把那个32位的oracle client安装包执行安装了下,安装时选的管理员。而且以前遇到过asp.net连不上oracle,是oracle安装文件夹的权限问题,所以我又对oracle所在的文件夹加netservices用户完全控制的权限。再重启, OK!搞定,程序居然能够连上了。。。。其实我自己也不知道是哪里的问题,到底是那个轻量级的包不行呢!还是那个权限问题...总之这样就好了。就此记录一下

2013-07-07 Note:今天还是同样的问题,经过再次的实验,证明是那个 轻量级的客户端包不行,一定要是那个安装版的,安装版的安装后的目录里面比那个轻量包解压后的目录里面要多出很多文件,由此可见,那个轻量包里面的oci.dll文件解决 pl/sql 连64位oracle的问题可以,但是咱C#程序要连64位oracle,还是得装那个安装版的客户端,可以不用装Administrator选项,默认客户端选项也就一百多兆。
客户端下载点这里。

作者:邹毅
如果觉得本文让你有所收获,请键点击右下角的 推荐 按钮
本文版权归作者和博客园共有,欢迎转载,但必须保留原文连接。

尝试加载 Oracle 客户端库时引发 BadImageFormatException相关推荐

  1. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。...

    从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了.  这样一来,只要客户端下载Instant C ...

  2. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题...

    开发环境:VS2010+ORACLE,今天换了64位WIN7 ,为了方便使用PL/SQL,装了32位oracle客户端,但是本地IIS调试程序的时候总是提示:尝试加载 Oracle 客户端库时引发 B ...

  3. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

    之前用VS2010编程,访问Oracle 11G数据库,连接正常,程序运行正常. 后来因为业务需要,增加了一个Oracle 12 C的数据库,需要访问,调试程序时报ORA-28040,百度后发现是没有 ...

  4. 如何解决 尝试加载 Oracle 客户端库时引发 BadImageFormatException

    环境:VS2019.oracle11g.plsql32位客户端 问题描述:vs启动网站默认启动报错,报错信息如图片展示 原因:32位的oracle客户端,但是应用试图以64位的方式来调用,所以报错!那 ...

  5. 解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException。如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错。

    解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException.如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错. 参考文章 ...

  6. Oracle 客户端库时引发 BadImageFormatException

    为什么80%的码农都做不了架构师?>>>    具体错误信息: 尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Orac ...

  7. vs连接Oracle 客户端库时引发 BadImageFormatException

    报错:Oracle 客户端库时引发 BadImageFormatException如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式? 解决方案:http://www.cnblog ...

  8. c语言中组件出现错误,错误:R6034 运行时错误! 应用程序尝试加载 C 运行库时出现错误。 有关详细信息,请联系应用程序的支持团队...

    错误:R6034 运行时错误! 应用程序尝试加载 C 运行库时出现错误. 有关详细信息,请联系应用程序的支持团队 错误消息 ArcGIS Engine 应用程序 10.4 和 10.4.1 版本会返回 ...

  9. 尝试加载项目属性窗口时出错。请关闭窗口并重试。 值不能为 null。 参数名: val

    最近被拉来做C# 开发, 项目-> 属性 报错 尝试加载项目属性窗口时出错.请关闭窗口并重试. 值不能为 null. 参数名: val 我的错误比较低级,我的Visual Studio 2019 ...

最新文章

  1. 两次关于软考网络工程师的经历
  2. Spring Boot+JWT+Shiro+MyBatisPlus 实现 RESTful 快速开发后端脚手架
  3. 《预训练周刊》第8期:首个千亿中文大模型「盘古」问世、谷歌等提出视频音频文本转换器VATT...
  4. c语言变量作用域生命周期,C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期...
  5. php科学计算库,科学计算库numpy基础
  6. 事实上着就是MAYA4.5完全手册插件篇的内容
  7. linux 导出软件,如何将perf(Linux工具)的输出保存到文件中?
  8. 现在该去外企吗?入职微软三个月的我告诉你!
  9. 【2017-3-17】视图,事务,备份还原,分离附加
  10. 主流低功耗服务器u,新组低功耗NAS服务器(1037U)分享
  11. 排列奇偶性与排序的关系
  12. 如何进行用户行为分析
  13. ios 行间距和段落间距_如何在Microsoft Word中控制行间距和段落间距
  14. Android版本新特性(6-12)(13预览)
  15. mysql 两表关联 分组查询
  16. SDUT-2933-人活着系列之Streetlights (Kruskal)
  17. Unity3d实现双人网络坦克大战
  18. 都市鸿蒙珠认主,都市之我能穿越洪荒
  19. html三角形图标,纯css三角形和css三角箭头实例代码
  20. Hive计算日环比 周同比

热门文章

  1. 阿里一面集合_阿里天猫一面+阿里饿了么一面+阿里妈妈一面
  2. 【云原生|实践指北】5:真实业务场景下云原生项目落地实践学习
  3. 如何做简单的数据分析
  4. 【MySQL】测试题02
  5. 华为上研所无线嵌入式优招面经
  6. python中randon随机数
  7. Android App 耗电的测试方法
  8. mysql修改时间为东八区,mysql时区设置为东八区
  9. cdh6.1,cdh6.2 hue sqoop组件提交异常
  10. VS2019怎么没有C++的窗体应用模板_简历中常被忽视的「自我评价」,怎么写?