Windows系统运行.NET代码时遇OCIEnvNLSCreate失败错误求助
解决Windows下.NET代码运行时OCIEnvNLSCreate失败(返回码-1)的问题
检查Oracle客户端匹配性与环境配置
- 必须安装和你的.NET程序位数一致的Oracle客户端(32位/64位别搞混)
- 配置环境变量:
- 把
ORACLE_HOME设为Oracle客户端的安装根目录 - 把
ORACLE_HOME\bin添加到PATH最前面,避免和其他版本的Oracle组件冲突
- 把
- 确认
ORACLE_HOME\network\admin目录下存在tnsnames.ora,且里面的数据源配置正确
调整.NET程序的Oracle驱动
- 如果你用的是
Oracle.DataAccess.Client,得保证它的版本和Oracle客户端完全兼容 - 更省心的办法是换成
Oracle.ManagedDataAccess.Client托管驱动,这个不需要依赖本地Oracle客户端,能避开大部分环境依赖坑 - 修正连接字符串配置(以app.config为例):
<connectionStrings> <add name="OracleConn" connectionString="Data Source=你的TNS名称;User Id=用户名;Password=密码;" providerName="Oracle.ManagedDataAccess.Client"/> </connectionStrings>
- 如果你用的是
系统权限与依赖检查
- 确保运行程序的用户对Oracle客户端安装目录有读写权限
- 安装对应版本的VC++运行库(Oracle客户端一般依赖这个,缺了会出各种奇怪问题)
- 改完环境变量后一定要重启电脑,不然配置不会生效
排查冲突问题
- 系统里装了多个Oracle客户端的话,卸载多余的,只留和程序匹配的那个
- 临时关掉杀毒软件或防火墙试试,有些安全软件会拦截Oracle客户端的文件访问
内容的提问来源于stack exchange,提问作者Abhijeet Kumar Jha
相关产品推荐
相关产品推荐

