我们正在从 .NET Microsoft oracle 驱动程序迁移到 ODP.NET 驱动程序。
我们遇到的问题之一是这个错误:
ORA-12705: 无法访问 NLS 数据文件或指定的环境无效
我们能够通过修改注册表和更改设置来停止错误(见这个问题)
在我们的例子中,我们改变了
HKEY_LOCAL_MACHINE - SOFTWARE - ORACLE - NLS_LANG
设置为 NA
与
HKEY_LOCAL_MACHINE - SOFTWARE - ORACLE - HOME0 - NLS_LANG
设置正确
我的问题是为什么注册表中会有不同的 NLS_LANG 设置,并且更改此值是否会产生任何影响?
更新:我刚刚在Oracle NLS FAQ中找到了以下内容
对于 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
好的,所以不同版本有不同的注册表设置......
笔记:
有些人在
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE未安装版本 7 时发现 NLS_LANG 设置为“NA”而感到困惑。这用于向后兼容,可以忽略。
我有 Oracle 9i,所以现在我更加困惑 - 为什么 ODP.NET dll 查看 Oracle 7 注册表设置?