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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值