分类目录归档:未分类

关于C# OracleClient连接OracleOCIEnvCreate failed with return code -1的问题解决方案

最近在很多新的客户电脑中使用我们的程序时报了一个错误:

英文:

OCIEnvCreate failed with return code -1 but error message text was not available.

中文:

OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用。

 

为了部署方便,我们使用了精简版的Oracle客户端,自己配或者网上找的安装包。

经过国内外的搜索,基本上此问题都定位为权限问题。确实,权限可能是问题之一,但是不完全是权限问题,没办法找到其他的原因了。后来想改用ODP.Net,在研究过程中发现了这一篇博客,有一句话:

当然,光有OCI目录(在环境变量Path中设置)不行,还得设置环境变量ORACLE_HOME为OCI目录,否则报错(因为oci.dll要用别的dll):

OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用。

是的,我们没有配置ORACLE_HOME,包括找的精简版的安装包也没有配置此环境变量,更让人头疼的是,有些电脑不用配置也能正常连接Oracle,导致了我们疏忽了此问题。刚刚接手此项目栽了跟头。

ORACLE_HOME是配置oci所在bin的上一级目录,非bin目录。如果大家的运行环境没必要在XP系统上,大家还是用ODP.Net吧,貌似只支持.net framework 4.5。

为了方便大家解决此问题,记录在此,希望搜索引擎能搜索到帮助大家。