我们正在从 .NET Microsoft oracle 驱动程序迁移到 ODP.NET 驱动程序。
我们遇到的问题之一是这个错误:
ORA-12705: 无法访问 NLS 数据文件或指定的环境无效
我们能够通过修改注册表和更改设置来阻止错误(看到这个问题 https://stackoverflow.com/questions/1629327/ora-00604-ora-12705)
在我们的例子中我们改变了
HKEY_LOCAL_MACHINE - SOFTWARE - ORACLE - NLS_LANG
被设置为 NA
与
HKEY_LOCAL_MACHINE - SOFTWARE - ORACLE - HOME0 - NLS_LANG
设置正确
我的问题是为什么注册表中会有不同的 NLS_LANG 设置,更改此值是否会产生任何连锁反应?
更新:
我刚刚在Oracle NLS 常见问题解答 http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm下列
对于 Oracle 版本 7:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
对于 Oracle 数据库版本 8、8i 和
9i:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEx\
其中“x”是唯一的数字
识别 Oracle 主目录。
HOME0是第一个安装
对于 Oracle 数据库 10g:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<oracle_home_name>
那里有一个带有名称的条目NLS_LANG
好的,所以不同版本有不同的注册表设置......
Note:
有些人因寻找一个而感到困惑
NLS_LANG 设置为“NA”HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
当没有安装版本 7 时。这
用于向后兼容,
并且可以忽略。
我有 Oracle 9i,所以现在我更加困惑 - 为什么 ODP.NET dll 查看 Oracle 7 注册表设置?