失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 尝试加载 Oracle 客户端库时引发 BadImageFormatException。问题记录

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

时间:2022-04-03 06:28:11

相关推荐

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

电脑是win8 64位,安装oracle 11g r2 64位的,谁知道一切装完毕后,打开项目却连不上oracle数据了...

首先是pl/sql连不上,装了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包之上。

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 是可以登录了,但是咱程序还是连不上啊!到connection.open()的时候,就报:“尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。“。这个大概是说我 程序不应该是用32的客户端去访问64位的数据库,我是这样理解的。但是我装了64的oracle 不就相当宇装了64位的客户端吗?装的那个轻量级的32位客户端只是方便pl/sql来访问oralce数据库的。这个问题网上给出了很多回答。大多是,改项目的属性里的生成选项里的目标平台:改为x86.意识是把项目当成32位运行。每个项目都照着改了,还是不管用。网上还有说,把网站项目属性里的web项里的服务器改成iis不使用vs自带的web deleloper ment 服务,应为它的进程为webDe.webServer.exe 是一个32位的进程,反正说了很多。这个方法还是可以。你改完后,项目确实可以运行,并访问oracle64位数据库了。但是我个人总觉得这种方法很麻烦。最后直接用IIS配置运行了,因为vs运行的是32位最好装个32位客户端应该就没问题了。

如果觉得《尝试加载 Oracle 客户端库时引发 BadImageFormatException。问题记录》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。