博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 12C 使用问题二:
阅读量:4655 次
发布时间:2019-06-09

本文共 1797 字,大约阅读时间需要 5 分钟。

环境:操作系统win7 64位,数据库ORACLE 12C,为了使用plsql,使用32位ORACLE客户端instantclient-basic-nt-12.1.0.1.0

我的代码是使用System.Data.OracleClient连接Oracle数据库

在webserver中测试连接数据库提示信息如下:

System.InvalidOperationException: 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。 ---> System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

   在 System.Data.Common.UnsafeNativeMethods.OCILobCopy2(IntPtr svchp, IntPtr errhp, IntPtr dst_locp, IntPtr src_locp, UInt64 amount, UInt64 dst_offset, UInt64 src_offset)
   在 System.Data.OracleClient.OCI.DetermineClientVersion()

WCF提示一样,如下:

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

从网上找了一下解决方法,基本上包括以下几种方式:

1、将使用“应用程序池”的:高级设置→启动32位应用程序,属性设置为true,即在64位系统下按照32位运行程序;

2、将解决方案,保存的时候,生成目标平台,指定为X86,即32位;

3、下载安装64位ORACLE客户端,并在环境变量的path中指定64位下指定oci.dll的位置。

这三种方法我都尝试过,错误依旧……

后来经过多次尝试,发现问题所在了。我的代码是使用System.Data.OracleClient连接Oracle数据库,而System.Data.OracleClient连接的时候要找ORACLE的oci.dll路径

我安装ORACLE 12C的时候,自动在环境变量的path中写入了oci.dll的路径,我的安装路径为D:\app\oracleman\product\12.1.0\dbhome_3,而在path中自动写入的路径为D:\app\oracleman\product\12.1.0\dbhome_3\BIN。

在使用ORACLE 12C 32位客户端的时候,手动添加了32位的oci.dll路径,我ORACLE 12C 32位客户端的路径为D:\app\oracleman\product,手动在path中添加的路径为D:\app\oracleman\product\instantclient_12_1。

这样的情况下,64位和32位的oci.dll路径在path中都有,而我现在想在64位的操作系统下运行32位的程序,程序一直找到的是64位的oci.dll。

为什么只使用64位而忽略32位的oci.dll,这个原因也不清楚,我起初的解决办法是:

删除path中的64位oci.dll的路径,只保留32位的(注意,修改path一定要重启电脑)……

虽然这么修改后,为题的确解决了,但是后来经过多次尝试,才发现问题所在……

ORACLE 12C 32位客户端的路径为D:\app\oracleman\product\instantclient_12_1,而instantclient_12_1文件夹默认没有Authenticated User的访问权限。

因此在给32位客户端文件夹添加Authenticated User的“读取和执行”权限后,尽管path中同时包含64位和32位的oci.dll路径,,程序也可以找到32位的oci.dll,正常运行……

 

 结论:环境参数中path配置后,还得注意相应的文件夹是否还受用户权限限制。

转载于:https://www.cnblogs.com/starpnd/p/3440937.html

你可能感兴趣的文章
百度地图瓦片工具:定义坐标
查看>>
jmeter控制器--交替控制器
查看>>
hdu 5365 Run
查看>>
jap _spring _maven
查看>>
IIS principle
查看>>
Oracle 如何对中文字段进行排序
查看>>
第七章 数组实验
查看>>
003_ElasticSearch详解与优化设计
查看>>
windows hosts
查看>>
PHP 初学之登录查询小case
查看>>
Spring 4 官方文档学习(十五)CORS支持
查看>>
react学习笔记1
查看>>
Dao层设计
查看>>
css各种姿势的水平居中
查看>>
MYSQL 测试常用语句使用技巧
查看>>
基础细节知识
查看>>
树状数组求区间最大值
查看>>
一个简单的PHP网站结构
查看>>
Redis 学习之简介及安装
查看>>
jsp简单的学习
查看>>