【不错】浅析Oracle三层全球化支持(NLS)

本文深入浅出地介绍了Oracle的全球化支持,重点解析了NLS(National Language Support)架构的三层体系——Database Level、Instance Level和Session Level。详细探讨了字符集、时区、日期格式等关键点,以及各层级之间的覆盖规则,帮助读者理解Oracle如何实现全球化适应和本地化显示。
摘要由CSDN通过智能技术生成

浅析Oracle三层全球化支持(NLS)


标签:

杂谈

分类:oracle
前言:
  1、NLS , ‘National Language Support (NLS)’ ,从概念我们看出这个参数实际上定义了数据库的存放数据的语言环境,当我们设定一种nls的时候实际上我们是为oracle在存放数据时指定了他的语种所特有的一些表达形式,比如我们选择chinese,那么它的中文字符如何存放,按什么规则排序,货币如何表示,日期格式也就被设定了。
        2、 Oracle对全球化(Global Support)有着全面的支持和解决方案,即用Oracle NLS架构来实现的
           OracleGlobal Support复杂的原因之一,就是Oracle的三层NLS体系。任何一个会话session在连接入数据库之后,都会面对三层NLS参数体系(即每一层都有一套自己的与其他层中同名的NLS参数变量集合。Database level有一个完备的NLS参数集合中各变量的值,这样很大层面上为后面两层提供了一个基础参数集合和存储标准,即当Instance Level里,用户没有为其NLS参数设置值时,则默认用Database level的给其赋值,当Session Level 里,用户没有为其NLS参数设置值时,则默认用Instance Level的给其赋值),分别为:DatabaseInstanceSession
    3、国际化(即Global Support的目的就是在于连接到同一个Oracle数据库服务端不同连接用户,都可以看到属于自己的Local化的结果(即同一个数据,在Oracle数据库服务端显示,和在客户端显示,可以按该数据不同的表示形式来显示)。比如,在我们在英文版的Oracle服务端(即Oracle服务端使用的NLS参数为英文字符集,具体说,
SQL> select * from nls_database_parameters;
 
PARAMETER                     VALUE
--------------------------------------------
NLS_LANGUAGE                  AMERICAN
NLS_TERRITORY                 AMERICA
NLS_CHARACTERSET              AL32UTF8(也可以是US7ASCII
调用时间函数而获得结果为“ 17-SEP-12 ”,
而在笔者的客户端系统(其使用的NLS参数为中文字符集的,即
SQL> select * from nls_session_parameters;
 
PARAMETER                     VALUE
------------------------------ -------------------------
NLS_LANGUAGE                  SIMPLIFIEDCHINESE
NLS_TERRITORY                 CHINA
NLS_CHARACTERSET              ZHS16GBK)中,
调用时间函数而获得结果显示为“ 17-9 -12 ”。
这都是 Oracle NLS 国际化所起到的作用。该例子的具体配置环境,见正文里的 1、环境介绍 部分。
   日期和数字类型的显示,带有很强烈的地区特性。比如,上述例子中,欧美格式“17-SEP-12”和我们更接受的“2012-9-17”就有很大的差距。Oracle将数据取值(即数据存储在oracle数据库中的二进制值)和显示分割开来,让session级别用户可以控制最终的显示。
    Instance Level配置是针对所有连接而言的。而国际化的目的就是在于不同连接用户,看到Local化的结果。因此,无论Instance Level进行何种的配置,最终很有可能都是被Session level的所覆盖。



正文:

作为一个成熟的商业数据库软件Oracle对全球化(Global Support)有着全面的支持和解决方案(即用Oracle NLS架构来实现的)。Oracle在国际化支持方面主要体现在几个方面:

ü 全球化字符集支持;目前,Oracle支持所有主流的字符集样式。通过NLS_CHARACTERNLS_NCHAR_CHARACTER指定的字符集可以支持全世界绝大多数语言文字的存储。Oracle推荐的字符集样式为AL32UTF8,也就是通常我们所见的UTF-8编码格式;

ü 全球化时区Timezone支持;全球化一个重要问题就是时区显示和保存问题。不同时区的用户同时向一个数据库插入数据,其时间先后是不可能回避的问题。同时,当非本地时区日期类型显示的时候,时区如何进行转换。Oracle在这个问题上提供了两个类型:Timestamp with timezoneTimestamp with local timezone,方便的解决了这些问题;

ü 日期和数字格式显示问题;日期和数字类型的显示,带有很强烈的地区特性。比如,欧美格式“17-SEP-12”和我们更接受的“2012-9-17”就有很大的差距。Oracle将数据取值和显示分割开来,让session级别用户可以控制最终的显示;(ü 软件显示语言;在Oracle软件和一些显示中,很多的字符和软件输出就带有语言特性。比如,在我们在英文版的Oracle服务端,调用时间函数而获得结果为“17-SEP-12”,而在笔者的客户端系统中,调用时间函数而获得结果显示为“17-9-12”。这都是Oracle NLS国际化所起到的作用;

ü 软件显示语言;在Oracle软件和一些显示中,很多的字符和软件输出就带有语言特性。比如,在我们在英文版的Oracle服务端,调用时间函数而获得结果为“17-SEP-12”,而在笔者的客户端系统中,调用时间函数而获得结果显示为“17-9-12”。这都是Oracle NLS国际化所起到的作用;

 

NLS是一套覆盖面广、内容庞杂的知识体系。笔者计划在接下来用一个系列来分析这个体系。本次,我们只是给NLS一个简单的体系介绍:Oracle的三层NLS体系关系和优先级配置。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值