在Windows环境中,Oracle客户端的 NLS_LANGUAGE
和 NLS_TERRITORY
可以通过以下方式调整:
1. 通过环境变量 NLS_LANG
设置
NLS_LANG
是Oracle客户端用来控制NLS参数的环境变量。它的格式为:
NLS_LANG = LANGUAGE_TERRITORY.CHARACTERSET
LANGUAGE
:控制NLS_LANGUAGE
(如AMERICAN
、SIMPLIFIED CHINESE
)。TERRITORY
:控制NLS_TERRITORY
(如AMERICA
、CHINA
)。CHARACTERSET
:控制客户端字符集(如AL32UTF8
、ZHS16GBK
)。
设置步骤:
- 打开Windows的“环境变量”设置:
- 右键点击“此电脑”或“我的电脑”,选择“属性”。
- 点击“高级系统设置” -> “环境变量”。
- 在“系统变量”或“用户变量”中,找到或新建
NLS_LANG
变量。 - 设置
NLS_LANG
的值,例如:- 简体中文环境:
NLS_LANG = SIMPLIFIED CHINESE_CHINA.AL32UTF8
- 英文环境:
NLS_LANG = AMERICAN_AMERICA.AL32UTF8
- 简体中文环境:
- 点击“确定”保存设置。
- 重新启动客户端工具(如SQL*Plus、PL/SQL Developer等),使设置生效。
2. 在客户端工具中修改
某些客户端工具(如SQL*Plus、PL/SQL Developer、Toad等)支持在连接时动态设置NLS参数。
SQL*Plus
在SQL*Plus中,可以通过 ALTER SESSION
命令修改当前会话的NLS参数:
ALTER SESSION SET NLS_LANGUAGE = 'SIMPLIFIED CHINESE';
ALTER SESSION SET NLS_TERRITORY = 'CHINA';
PL/SQL Developer
在PL/SQL Developer中,可以通过以下步骤设置:
- 打开PL/SQL Developer。
- 点击“工具” -> “首选项”。
- 在“Oracle” -> “NLS”选项卡中,设置
NLS_LANGUAGE
和NLS_TERRITORY
。 - 重新连接数据库,使设置生效。
3. 通过注册表设置
如果希望通过注册表全局设置 NLS_LANG
,可以按照以下步骤操作:
- 打开注册表编辑器:
- 按
Win + R
,输入regedit
,回车。
- 按
- 导航到以下路径:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<Oracle_Home_Name>
<Oracle_Home_Name>
是Oracle客户端的Home名称(如OraClient11g_home1
)。
- 在右侧窗口中找到或新建一个字符串值,名称为
NLS_LANG
。 - 设置
NLS_LANG
的值,例如:SIMPLIFIED CHINESE_CHINA.AL32UTF8
- 关闭注册表编辑器,重新启动客户端工具。
4. 验证设置
无论通过哪种方式设置,都可以通过以下SQL语句验证当前会话的NLS参数:
SELECT * FROM nls_session_parameters WHERE parameter IN ('NLS_LANGUAGE', 'NLS_TERRITORY');
5. 常见问题
问题1:设置后未生效
- 确保客户端工具重新启动。
- 检查是否有其他配置覆盖了
NLS_LANG
设置(如客户端工具的配置文件)。
问题2:字符集不匹配
- 确保
NLS_LANG
中的字符集与数据库字符集兼容。 - 例如,如果数据库字符集是
AL32UTF8
,客户端字符集也应设置为AL32UTF8
。
6. 总结
在Windows环境中,可以通过以下方式调整客户端的 NLS_LANGUAGE
和 NLS_TERRITORY
:
- 环境变量
NLS_LANG
:全局设置,适用于所有客户端工具。 - 客户端工具设置:在特定工具中动态修改。
- 注册表设置:全局设置,适用于所有客户端工具。
实际最简单的方法是设置环境变量NLS_LANG。