nls_lang、nls_language、nls_char…

nls_lang、nls_language、nls_characterset的区别

oracle 数据库对字符的处理及表现形式分为三个层面,优先级先后分别是数据库初始化参数字符集、os操作系统环境变量级、session级

先说什么是字符集?字符集就是按照一定的字符编码方案,对一组特定的符号,分别赋予不同数值编码的集合。

格式为<语言><比特位数><编码 >
比如: ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集

数据库初始化参数字符集,在建数据库前指定的字符集,建立后通常不能修改,如果修改可以用命令alter database set character xxx; 不过这样修改有一定的危险,有可能会出现乱码造成数据的丢失,而且修改后的字符集一定是修改前的超集。如果未指定建库时会依赖os的设置。

session级作用域只是影响那个连接

nls_characterset设置服务器的字符集

nls_lang客户端字符集定义了客户端字符数据的编码方式,任何发自或发往客户端的字符数据均使用客户端定义的字符集编码,客户端可以看作是能与数据库直接连接的各种应用

NLS_NCHAR_CHARACTERS? 全球化的字符集默认为 AL16UTF16

nls_language是数据库内的默认语言 ,可能不易理解,下面是官方解释
NLS_LANGUAGE specifies the default language of the database. This language is used for messages, day and month names, symbols for AD, BC, a.m., and p.m., and the default sorting mechanism. This parameter also determines the default values of the parameters NLS_DATE_LANGUAGE and NLS_SORT.

查询相关的几个表
nls_database_parameters;
nls_session_parameters;

转自:http://wenku.baidu.com/view/f7afc11b650e52ea551898f0 .html




oracle的字符集(NLS_LANGUAGE)

数据库服务器字符集
select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。

客户端字符集环境
select * from nls_instance_parameters,其来源于v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表。

会话字符集环境
select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,
可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。
如果多个设置存在的时候,alter session>环境变量>注册表>参数文件
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。

注:

1.通过alter system set nls_language='AMERICAN' scope=spfile; 可以更改nls_database_parameters和nls_instance_parameters的nls_language

2. 通过alter session set nls_language='SIMPLIFIED CHINESE'; 可以更改nls_session_parameters的nls_language

转自:http://blog.csdn.net/zftang/article/details/6586524




关于nls_lang与nls_language的区别

一个是环境变量,一个是数据库参数。
 
nls_lang是在客户端设置客户端字符集,也就是在环境变量(Linux:~/.bash_profile)中。
 
nls_language在服务端设置,SERVER端的lang,属于parameter,可以由alter system set nls_language='...' scope=spfile 来修改。
 
nls_characterset也是设置服务器的字符集。

转自:http://bachue.is-programmer.com/posts/21202.html
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"failed to get local nls_lang"是一个错误信息,通常在使用数据库或运行某些程序时出现。这个错误信息通常表示系统无法获取本地的"NLS_LANG"(National Language Support)设置。 "NLS_LANG"是一个环境变量,用于指定数据库和程序的字符集。它决定了如何在系统中处理不同语言和字符编码。当系统无法获取本地"NLS_LANG"设置时,会出现"failed to get local nls_lang"错误。 解决此错误的方法是按照以下步骤操作: 1. 检查系统环境变量设置:确保"NLS_LANG"环境变量已正确设置。您可以在操作系统的环境变量设置中查看或编辑此设置。确保"NLS_LANG"的值与您需要的字符集匹配。 2. 检查数据库配置:如果您在使用数据库时遇到此错误,请确保数据库配置文件中的"NLS_LANG"参数正确设置。您可能需要联系数据库管理员或查看数据库相关文档来进行正确配置。 3. 检查程序设置:如果此错误是在运行某个程序时出现的,请检查程序的配置文件或代码中是否有"NLS_LANG"设置。将其设置为正确的值。 4. 重新启动系统:在进行上述更改后,重新启动系统以确保环境变量和配置生效。 需要注意的是,对于不同的操作系统和应用程序,解决此错误的具体步骤可能会有所不同。您可以参考相关的操作系统和应用程序文档来获取更详细的解决方案。 总之,"failed to get local nls_lang"错误表示系统无法获取本地的"NLS_LANG"设置,通过正确设置环境变量和配置,可以解决此问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值