在大型数据库管理系统中ORACLE数据库不论在数据库管理能力还是在安全性方面都是无可非议的国内企业使用ORACLE数据库的也较多但是由于ORACLE不同版本的字符集给数据显示数据备份数据转换等实际工作带来了不少麻烦
一字符集参数
一旦数据库创建后数据库的字符集是不能改变的因此考虑使用哪一种字符集是十分重要的数据库字符集应该是操作系统本地字符集的一个超集存取数据库的客户使用的字符集将决定选择哪一个超集即数据库字符集应该是所有客户字符集的超集
下面介绍一些与字符集有关的NLS_LANG参数
NLS_LANG格式NLS_LANG=language_territorycharset
有三个组成部分(语言地域和字符集)每个组成成分控制了NLS子集的特性三个成分可以任意组合例如
AMERICAN_AMERICAUSSCII
JPANESE_JAPANJAEUC
其中language 指定服务器消息的语言
territory 指定服务器的日期和数字格式
Charset 指定字符集
还有一些子集可以更明确定义NLS_LANG参数
NLS_DATE_FORMAT 缺省的日期格式
NLS_DATE_LANGUAGE 缺省的日期语言
NLS_NUMBERIC_CHARACTERS 小数字符和组分隔开
NLS_CURRENCY 本地货币字符
NLS_ISO_CURRENCY ISO货币字符
NLS_SORT 字符排序序列
二字符集转换
NLS_LANG参数的修改方法
)用SYS用户名登陆ORACLE
)查看字符集内容
SQL>SELECT * FROM PROPS$;
)修改相应的字符子集
SQL>UPDATE PROPS$ SET VALUE$=SIMPLIFIED CHINESE
WHERE NAME=NLS_LANGUAGE;
) 递交COMMIT;
NLS_LANG参数的具体应用
)采用服务器端/客户端方式两端字符集不同
修改客户端字符集
WIN/WIN修改注册表
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG
UNIX按照方法直接进入ORACLE 修改
)不同字符集使用EXP/IMP命令
按照方法修改IMP端的字符集设置如果是WIN/WIN系统还必须修改注册表注意NLS_LANG三个子集的参数必须一致另外如果字符集单双字节设置不同则不能通过修改字符集进行转换可以使用其他方式不修改字符集进行ORACLE数据库搬移如数据量比较小可以使用SQLLOAD命令通过文本文件转换使用其他数据库软件(ACCESSFOXPRO等)转换