关于Oracle字符集NLS_LANGUAGE导致ORA-29275问题

本人使用的instantclient是用默认的语言/地域/字符集,即没有给系统配置NLS_LANG环境变量。连接服务器(本地虚拟机)的Oracle查询表时,出现以下问题:

ORA-29275: partial multibyte character

使用select * from nls_session_parameters或SELECT * FROM v$nls_parameters或select userenv('language') from dual进行查询,结果显示为:

AMERICAN_AMERICA.ZHS16GBK

 

后来借助另一台电脑测试,另一台电脑却可以正常查询!!经查该电脑使用的是

SIMPLIFIED CHINESE_CHINA.ZHS16GBK,原来是自己的language不对。

 

上网找了很多方案,例如:怎么修改nls_session_parameters或v$nls_parameters的NLS_LANGUAGE和NLS_TERRITORY。各种尝试都没能把我的language改成SIMPLIFIED CHINESE_CHINA.ZHS16GBK。

配置了NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK环境变量,重启PL/SQL还是没变。

直到后来我重启了电脑,才发现NLS_LANG生效了!!

再查NLS_LANGUAGE已经显示为SIMPLIFIED CHINESE,NLS_TERRITORY也显示为CHINA,现在可以正常查询了(MMP,网上的教程只叫加环境变量,都没提醒重启)

 

另外顺便说明一下:

nls_session_parameters会话字符集环境表和userenv('language')都来源于v$nls_parameters,而v$nls_parameters结果值即和上面问题所描述的情况一样,是与客户端有关,即与客户端的NLS_LANG环境变量有关。

nls全称National Language Support。

你可能感兴趣的:(关于Oracle字符集NLS_LANGUAGE导致ORA-29275问题)