最近开发C#加ORACLE的程序,就有一台电脑连接的时候报错误
ORA-12705: Cannot access NLS data files or invalid environment specified
经过参考网上的文章,发现是NLS_LANG 的问题,奇怪的是为什么就这一台电脑有问题,后来在注册表里面找NLS_LANG的内容,结果发现这台电脑以前安装过ORACLE 9.X版本,我安装11的版本然后删除9也没有用。
最后还是把NLS_LANG改一下就成功了,发现它是64位里面,而我开发环境是32,而且安装11版本的CLIENT也是32,不清楚是不是这里出问题了。
参考下面的的文章:
http://www.cnblogs.com/htht66/archive/2012/01/29/2330991.html
[Oracle整理]ORA-12705(字符集问题)
说明:本内容是工作用到的知识点整理,来自工作中和网络。
代码于Oracle9上测试。
环境不同
DB server相同
AP server相同
AP server上的DOTNET 版本相同——都是.NET 3.5SP1
建立相同的环境
客户端不相同,我的计算机上装的是10.2.0。AP server上装的是9.2.0
再次测试
出现ORA-12705错误
关于ORA-12705
第一种解释
ORA-12705语系设定错误
在regedit的\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下找到NLS_LANG机码予以删除就可以work
出现ORA-12705的错误讯息,原因是NLS_LANG在regedit机码值是NA
为语系的编码,是我在自己的计算机上安装了Oracle Client后又移除所遗留下来的.
因此只要在regedit的\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下找到NLS_LANG机码予以删除就可以work
第二种解释
在环境变量中加一项:NLS_LANG , 值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
100%解决你的问题
第三种解释
Oracle Instant Client ORA-12705 错误
问题: 使用Oracle Instant Client 出现 ORA-12705: Cannot access NLS data files or invalid environment specified 错误。
如果是Windows平台,注册表里 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 查找键 NLS_LANG,这个键由Oracle标准客户端安装创建, 值是 NA 。这个导致了 ORA-12705错误。解决方法就是改名 NLS_LANG。
Linux下 如果环境变量 NLS_LANG 值是NA 会引起 ORA-12705 错误,解决方法是删除这个变量,如/home/oracle1/.profile中的
export NLS_LANG="SIMPLIFIED_CHINA.ZHS16GBK"
给注释掉.
找出上述现象
修改NLS_LANG
改为AMERICAN_AMERICA.ZHT16BIG5,如下图。
Oracle 9i设定
Oracle 10g设定
学习资料