升级脚本的字符集和NLS_LANG的关系
1. 脚本字符集和NLS_LANG的关系
要求:升级时,必须保证客户端 NLS_LANG 和脚本文件字符集保持一致。
2. 什么是Oracle字符集
Oracle字符集表示支持哪些字符的展示,根据国家的不同,使用不同的字符集能够使数据库工具、错误消息、排序次序、日期、时间、货币、数字和日历自动适应本地化语言和平台。
影响Oracle数据库字符集最重要的参数是NLS_LANG参数,它的格式如下:
NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了 NLS 自己的特性。其中:
Language:指定服务器消息的语言
territory:指定服务器的日期和数字格式
charset:指定字符集
举例:
AMERICAN_AMERICA.ZHS16GBK SIMPLIFIED CHINESE_CHINA.ZHS16GBK
3. 如何查看字符集
- 查询Oracle server 字符集
select userenv('language') from dual;
-
查询 Oracle client 字符集(plsql)
运行 REGEDIT ,
第一步选 HKEY_LOCAL_MACHINE,
第二步选择 SOFTWARE,
第三步选择Oracle,
第四步选择NLS_LANG,键入与服务器端相同的字符集。
-
查询操作系统字符集
windows下查看和设置方法:
-- 查看方法 echo %NLS_LANG% -- 设置方法 set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
linux下查看和设置方法:
-- 查看方法 echo $NLS_LANG -- 设置方法 export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
-
查询升级脚本字符集
可以使用Notepad++进行打开,文本在文件中也是有编码的,常用的编码格式 ANSI 和 UTF8 ,由于SQLPLUS不能识别 UTF8 文件的BOM头,所以需要保存为无BOM头的UTF8格式。