早期oracle全球化被称为国家语言支持(NLS)。
1 全球化特性
1.1 字符集
字符集是一种用于将字符表示为比特序列的定义编码模式。
字符集由许多已定义的不同字符组成。
Unicode标准是一种用于字符编码的国际标准,并且包含了所有计算机系统需要的所有字符。
1.2 语言支持
可以查询V$NLS_VALID_VALUES视图,系统支持的语言。
。NLS_LANGUAGE 显示错误消息的语言
。NLS_DATE_LANGUAGE 用于日期和月份名
。NLS_SORT 语言排序顺序
1.3 地区支持
可以查询V$NLS_VALID_VALUES视图,系统支持的地区。
。NLS_TERRITORY 地理位置
。NLS_CURRENCY 当地货币符号
。NLS_DUAL_CURRENCY 指定地区次要的货币符号
。NLS_ISO_CURRENCY 指示ISO地区货币符号
。NLS_DATE_FORMAT DATE数据类型列所使用的格式
。NLS_NUMERIC_CHARACTERS 小数点分隔符与组分隔符
。NLS_TIMESTAMP_FORMAT TIMESTAMP数据类型列所使用的格式
。NLS_TIMESTAMP_TZ_FORMAT TIMESTAMP WITH LOCAL TIMEZONE数据类型列所使用的格式
1.4 其他NLS设置
。NLS_CALENDER 允许使用另一种历法系统
。NLS_COMP 使用字母的NLS值进行ANSI比较
。NLS_LENGTH_SEMANTICS 允许将多字节字符作为完整的字符进行操纵
。NLS_NCHAR_CONV_EXCP 限制在VARCHAR2与NVARCHAR之间进行转换时生成出错消息
2 使用全球化支持功能
级别:数据库、实例、客户端、会话和语句。从低到高的优先级排列。
2.1 选择字符集
数据库字符集被用于存储varchar2、clob、char和long数据类型列的所有数据。如果改变了字符集,那么很可能销毁这些数据类型列中已存在的数据。
创建数据库时选择一个当前与将来都能满足所有需求的字符集至关重要。
2.2 改变数据库字符集
使用csscan和lcsscan工具对数据库进行扫描,查看改变字符集是否会产生问题。
然后,使用 ALTER DATABASE CHARACTER SET 命令来完成字符集的修改。
要求最好不要修改字符集。
2.3 数据库级别
查看NLS_DATABASE_PARAMETERS视图,来确定数据库级别。
2.4 实例级别
查看NLS_INSTANCE_PARAMETERS
2.5 客户端级别
服务器与客户端全球化设置之间的转换是在oracle net完成。
Set NLS_LANG=American
2.6 会话级别
使用dbms_session软件包
sys@ORCL> execute dbms_session.set_nls('nls_date_format','''dd.mm.yyyy''');
PL/SQL 过程已成功完成。
sys@ORCL> select sysdate from dual;
SYSDATE
----------
03.05.2012
使用alter session命令
sys@ORCL> alter session set nls_date_format='mm.dd.yyyy';
会话已更改。
sys@ORCL> select sysdate from dual;
SYSDATE
----------
05.03.2012
2.7 语句级别
使用函数to_date、to_number、to_char和to_nchar
3 语言排序与选择
Oracle使用默认的二进制排序。
需要设置NLS_SORT
4 Locale Builder
用于拖过为语言、地区、字符集和语言排序生成定义而创建自定义的全球化环境。
5 使用时区
使用v$timezone_names视图查看被支持的所有时区
使用alter database set time_zone=命令进行时区的调整。
例子:
|
sys@ORCL> select sessiontimezone||dbtimezone from dual;
SESSIONTIMEZONE||DBTIMEZONE -------------------------------------------------------
+08:00+08:00 sys@ORCL> create table tms(a date, b timestamp, c timestamp with time zone, d ti mestamp with local time zone);
表已创建。
sys@ORCL> insert into tms values(sysdate,sysdate,sysdate,sysdate);
已创建 1 行。
sys@ORCL> alter session set time_zone=dbtimezone;
会话已更改。
sys@ORCL> select * from tms;
A B ---------- --------------------------------------------------------------------- ------ C --------------------------------------------------------------------------- D --------------------------------------------------------------------------- 05.03.2012 03-5月 -12 02.50.03.000000 下午 03-5月 -12 02.50.03.000000 下午 +08:00 03-5月 -12 02.50.03.000000 下午
sys@ORCL> alter session set time_zone='pacific/tahiti';
会话已更改。
sys@ORCL> select b,c,d from tms;
B --------------------------------------------------------------------------- C --------------------------------------------------------------------------- D --------------------------------------------------------------------------- 03-5月 -12 02.50.03.000000 下午 03-5月 -12 02.50.03.000000 下午 +08:00 02-5月 -12 08.50.03.000000 下午
|
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9537053/viewspace-722719/ ,如需转载,请注明出处,否则将追究法律责任。