《OCP培训资料使用全球化支持》由会员分享,可在线阅读,更多相关《OCP培训资料使用全球化支持(28页珍藏版)》请在金锄头文库上搜索。
1、16 版权所有 2006,Oracle。保留所有权利。 使用全球化支持使用全球化支持 版权所有 2006,Oracle。保留所有权利。 16-2 课程目标课程目标 学完本课后,应能完成下列工作:学完本课后,应能完成下列工作: 确定满足业务需求的正确数据库字符集确定满足业务需求的正确数据库字符集 获取全球化支持配置信息获取全球化支持配置信息 为数据库和单独的会话自定义基于语言的行为为数据库和单独的会话自定义基于语言的行为 为查询指定不同的语言排序为查询指定不同的语言排序 在不区分大小写或重音的情况下,检索与搜索字符串在不区分大小写或重音的情况下,检索与搜索字符串匹配的数据匹配的数据 版权所有 2
2、006,Oracle。保留所有权利。 16-3 每个每个 DBA 必备的知识必备的知识 什么是字符集?什么是字符集? 如何使用字符集?如何使用字符集? 要避免的问题要避免的问题 选择字符集选择字符集 获取字符集信息获取字符集信息 指定基于语言的行为指定基于语言的行为 使用语言搜索和排序使用语言搜索和排序 使用数据转换使用数据转换 版权所有 2006,Oracle。保留所有权利。 16-4 什么是字符集什么是字符集 Oracle 数据库支持各种字符编码方案:数据库支持各种字符编码方案: 单字节字符集单字节字符集 7 位位 8 位位 多字节字符集,包括多字节字符集,包括 Unicode 版权所有
3、2006,Oracle。保留所有权利。 16-6 了解了解 Unicode 增补字符增补字符 AL40UTF8 AL16UTF16 63EE AA 9EF0 9D 84 9E64C3D0 A4B6td006300E10074A89ED834 DD1E006400F60424cC37491编码:使用字节序列表示字符编码:使用字节序列表示字符 版权所有 2006,Oracle。保留所有权利。 16-8 如何使用字符集如何使用字符集 Oracle Net 将客户机上的将客户机上的 NLS_LANG 设置与服务器上设置与服务器上的字符集进行比较。的字符集进行比较。 如果需要,会进行自动透明的转换。如果
4、需要,会进行自动透明的转换。 客户机客户机Oracle NetNLS_LANG 服务器服务器版权所有 2006,Oracle。保留所有权利。 16-9 要避免的问题要避免的问题 示例:示例: 不发生转换,因为好像没有必要。不发生转换,因为好像没有必要。 问题:在数据库中输入无效数据。问题:在数据库中输入无效数据。 服务器服务器 数据库字符集:数据库字符集: AL32UTF8 客户机客户机 Windows 英文版英文版 码页:码页:WE8MSWIN1252 NLS_LANG: AL32UTF8 Oracle Net 版权所有 2006,Oracle。保留所有权利。 16-10 其它问题示例其它问
5、题示例 CREATE DATABASE . CHARACTER SET US7ASCII NATIONAL CHARACTER SET UTF8 . % export NLS_LANG= SIMPLIFIED CHINESE_HONGKONG.US7ASCII 版权所有 2006,Oracle。保留所有权利。 16-11 选择字符集选择字符集 综合考虑综合考虑 选择满足当前和未来业务需求的正确字符集选择满足当前和未来业务需求的正确字符集 指定字符集指定字符集 在创建数据库之后更改字符集在创建数据库之后更改字符集版权所有 2006,Oracle。保留所有权利。 16-12 数据库字符集和国家字符
6、集数据库字符集和国家字符集 可以使用可以使用 AL16UTF16 或或 UTF8 存储存储 Unicode 可以存储宽度不同的字符集可以存储宽度不同的字符集 存储类型为存储类型为 NCHAR、NVARCHAR2 或或 NCLOB 的数据列的数据列 存储类型为存储类型为 CHAR、VARCHAR2、CLOB 或或 LONG 的数据列的数据列 可以交换可以交换 只有重新创建时才能更改,但是只有重新创建时才能更改,但是少数情况除外少数情况除外 创建时定义创建时定义 创建时定义创建时定义 国家字符集国家字符集 数据库字符集数据库字符集 版权所有 2006,Oracle。保留所有权利。 16-13 获取
7、字符集信息获取字符集信息 SQL SELECT parameter, value 2 FROM nls_database_parameters 3 WHERE parameter LIKE %CHARACTERSET%; PARAMETER VALUE - - NLS_CHARACTERSET WE8ISO8859P1 NLS_NCHAR_CHARACTERSET AL16UTF16 2 rows selected. 版权所有 2006,Oracle。保留所有权利。 16-14 指定基于语言的行为指定基于语言的行为 SELECT sysdate FROM dual; 数据库服务器的初始化参数数
8、据库服务器的初始化参数 客户机的环境变量客户机的环境变量 ALTER SESSION 命令命令 SQL 函数函数 版权所有 2006,Oracle。保留所有权利。 16-15 为会话指定基于语言的行为为会话指定基于语言的行为 使用使用 NLS_LANG 环境变量环境变量指定区域设置行为:指定区域设置行为: 语言语言 地区地区 字符集字符集 设置其它设置其它 NLS 环境变量,以便:环境变量,以便: 覆盖所有会话的数据库初始化参数设置覆盖所有会话的数据库初始化参数设置 自定义区域设置行为自定义区域设置行为 更改更改 NLS 库文件的默认位置库文件的默认位置 NLS_LANG=FRENCH_CAN
9、ADA.WE8ISO8859P1 版权所有 2006,Oracle。保留所有权利。 16-16 基于语言和基于地区的参数基于语言和基于地区的参数 参数参数 NLS_LANGUAGE NLS_DATE_LANGUAGE NLS_SORT 默认值默认值 AMERICAN AMERICAN BINARY AMERICA $ $ AMERICA DD-MON-RR ., DD-MON-RRHH.MI.SSXFF AM DD-MON-RRHH.MI.SSXFF AM TZR NLS_TERRITORY NLS_CURRENCY NLS_DUAL_CURRENCY NLS_ISO_CURRENCY NLS
10、_DATE_FORMAT NLS_NUMERIC_CHARACTERS NLS_TIMESTAMP_FORMAT NLS_TIMESTAMP_TZ_FORMAT 版权所有 2006,Oracle。保留所有权利。 16-18 ALTER SESSION SET NLS_DATE_FORMAT=DD.MM.YYYY; DBMS_SESSION.SET_NLS(NLS_DATE_FORMAT, DD.MM.YYYY) ; 指定基于语言的行为指定基于语言的行为 在在 SQL 函数中使用函数中使用 NLS 参数参数 SELECT TO_CHAR(hire_date,DD.Mon.YYYY, NLS_DA
11、TE_LANGUAGE=FRENCH) FROM employees WHERE hire_date 01-JAN-2000; 版权所有 2006,Oracle。保留所有权利。 16-19 语言搜索和排序语言搜索和排序 排序顺序会受以下因素影响:排序顺序会受以下因素影响: 区分大小写区分大小写 变音符号或重音字符变音符号或重音字符 被视为单个字符的字符组合被视为单个字符的字符组合 音标或字符外观音标或字符外观 文化首选项文化首选项 版权所有 2006,Oracle。保留所有权利。 16-20 语言搜索和排序语言搜索和排序 三种类型的排序:三种类型的排序: 二进制排序二进制排序 根据编码字符的二
12、进制值进行排序根据编码字符的二进制值进行排序 单语语言排序单语语言排序 根据为字符分配的主要值和次要值排两遍序根据为字符分配的主要值和次要值排两遍序 多语语言排序多语语言排序 基于多语排序规则的基于多语排序规则的 ISO 标准标准 (ISO 14651) 和和 Unicode 3.2 标准标准 根据中文字符的笔画数、拼音或部首进行排序根据中文字符的笔画数、拼音或部首进行排序 版权所有 2006,Oracle。保留所有权利。 16-21 使用语言搜索和排序使用语言搜索和排序 可以使用下列对象指定用于字符数据的排序类型:可以使用下列对象指定用于字符数据的排序类型: NLS_SORT 参数参数 从从
13、 NLS_LANG 环境变量得到的默认值(如果设置的话)环境变量得到的默认值(如果设置的话) 可以为会话、客户机或服务器指定可以为会话、客户机或服务器指定 NLSSORT 函数函数 在查询级别定义排序方法在查询级别定义排序方法 版权所有 2006,Oracle。保留所有权利。 16-23 不区分大小写和重音的搜索和排序不区分大小写和重音的搜索和排序 指定语言名称:指定语言名称: 示例:示例: 为为 WHERE 子句和子句和 PL/SQL 块指定排序操作:块指定排序操作: 对移植的数据库非常有用对移植的数据库非常有用 NLS_SORT = _AI | _CI NLS_SORT = FRENCH_
14、M_AI NLS_SORT = XGERMAN_CI NLS_COMP = BINARY | ANSI 版权所有 2006,Oracle。保留所有权利。 16-24 SQL 和函数支持的设置和函数支持的设置 下列下列 SQL 子句支持子句支持 NLS_SORT 和和 NLS_COMP 设置:设置: WHERE ORDER BY START WITH HAVING IN/NOT IN BETWEEN CASE-WHEN NLSSORT()函数函数支持支持不区分大小写和重音的功能。不区分大小写和重音的功能。 版权所有 2006,Oracle。保留所有权利。 16-25 语言索引支持语言索引支持 对
15、语言排序值创建索引。对语言排序值创建索引。 无需指定无需指定 ORDER BY 子句和子句和 NLSSORT 即可快速查询数据:即可快速查询数据: 对对 NLS_SORT 参数进行设置,使其与创建索引时要用于语参数进行设置,使其与创建索引时要用于语言排序的语言定义相符。言排序的语言定义相符。 CREATE INDEX list_word ON list (NLSSORT(word, NLS_SORT=French_M); SELECT word FROM list; 版权所有 2006,Oracle。保留所有权利。 16-26 自定义语言搜索和排序自定义语言搜索和排序 可以为下列对象自定义语言
16、排序:可以为下列对象自定义语言排序: 可以忽略的字符可以忽略的字符 压缩或扩展字符压缩或扩展字符 特殊组合字母或特殊字母特殊组合字母或特殊字母 扩展字符或特殊字母扩展字符或特殊字母 特殊的大小写字母特殊的大小写字母 上下文相关的字符上下文相关的字符 反向辅助排序反向辅助排序 规范等同值规范等同值版权所有 2006,Oracle。保留所有权利。 16-27 CLOB 和和 NCLOB 之间的隐式转换之间的隐式转换 下列操作支持透明的隐式转换:下列操作支持透明的隐式转换: 查询和查询和 DML 的的 SQL IN 和和 OUT 绑定变量绑定变量 传递传递 PL/SQL 函数和过程参数函数和过程参数
17、 PL/SQL 变量赋值变量赋值 版权所有 2006,Oracle。保留所有权利。 16-28 使用使用 Oracle 实用程序进行实用程序进行 NLS 数据转换数据转换 如果使用不同的字符集,将数据从一个数据库中导出并如果使用不同的字符集,将数据从一个数据库中导出并导入另外一个数据库时,可能会执行多项数据转换。导入另外一个数据库时,可能会执行多项数据转换。 外部表使用服务器上的外部表使用服务器上的 NLS 设置确定数据字符集。设置确定数据字符集。 SQL*Loader: 常规路径:将数据转换成常规路径:将数据转换成 NLS_LANG 指定的会话字符集。指定的会话字符集。 直接路径:使用客户端
18、指令转换数据。直接路径:使用客户端指令转换数据。 版权所有 2006,Oracle。保留所有权利。 16-30 使用数据泵进行使用数据泵进行 NLS 数据转换数据转换 数据泵导出实用程序始终以与数据所来自的数据库相同数据泵导出实用程序始终以与数据所来自的数据库相同的字符集保存数据。的字符集保存数据。 如果需要,数据泵导入实用程序会将数据转换成目标数如果需要,数据泵导入实用程序会将数据转换成目标数据库的字符集。据库的字符集。 数据泵日志文件以数据泵日志文件以 NLS_LANG 为启动数据泵的会话指为启动数据泵的会话指定的语言进行编写。定的语言进行编写。 版权所有 2006,Oracle。保留所有
19、权利。 16-31 全球化支持功能全球化支持功能 语言支持语言支持 地区支持地区支持 字符集支持字符集支持 语言排序语言排序 消息支持消息支持 日期和时间格式日期和时间格式 数字格式数字格式 货币格式货币格式 法语法语 数据数据 日语日语 数据数据 版权所有 2006,Oracle。保留所有权利。 16-32 小结小结 在本课中,您应该已经学会如何:在本课中,您应该已经学会如何: 确定满足业务需求的正确数据库字符集确定满足业务需求的正确数据库字符集 获取全球化支持配置信息获取全球化支持配置信息 为数据库和单独的会话自定义基于语言的行为为数据库和单独的会话自定义基于语言的行为 为查询指定不同的语言排序为查询指定不同的语言排序 在不区分大小写或重音的情况下,检索与搜索字符串在不区分大小写或重音的情况下,检索与搜索字符串匹配的数据匹配的数据 版权所有 2006,Oracle。保留所有权利。 16-33 练习概览:使用全球化支持功能练习概览:使用全球化支持功能 本练习包含以下主题:本练习包含以下主题: 查看数据库字符集和国家字符集查看数据库字符集和国家字符集 标识有效的标识有效的 NLS 值值 设置设置 NLS 参数参数