好笔头

博客园 首页 新随笔 联系 订阅 管理
最近开发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错误

clip_image002

关于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"

给注释掉.

找出上述现象

clip_image004

修改NLS_LANG

改为AMERICAN_AMERICA.ZHT16BIG5,如下图。

Oracle 9i设定

clip_image006

Oracle 10g设定

clip_image008

学习资料

http://space.itpub.net/8475224/viewspace-692675

http://blog.chinabyte.com/a/500815.html

人的一生应该这样度过:当他回首往事的时候,不会因为虚度年华而悔恨,也不会因为碌碌无为而羞愧。
posted on 2015-06-13 21:12  Jacob,Weng  阅读(4193)  评论(0编辑  收藏  举报