一、什么是Oracle字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。
影响Oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下: NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:
Language:指定服务器消息的语言,影响提示信息是中文还是英文
Territory:指定服务器的日期和数字格式,
Charset:指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。
关于字符集
OS字符集、客户端字符集、数据库字符集相互之间存在着怎样的关系呢?
很多文章说道,为了避免乱码而将客户端字符集设置成与OS字符集一样,事实是这样吗?
很多文章说道,为了避免乱码而将客户端字符集设置成与OS字符集一样,事实是这样吗?
expdp/impdp datapump是一个server端工具,无所谓 client和数据库字符集; 只受source database和target database的字符集影响
exp/imp 是 client-server工具,Oracle官方推荐 exp使用 NLS_LANG变量与导出数据库的一致(Oracle recommends to set the character set part of NLS_LANG environment parameter to ALWAYS the same character set as the character set of the database you are exporting.)
建议你参考Metalink 文档:NLS considerations in Import/Export - Frequently Asked Questions (Doc ID 227332.1)
1. How does NLS affect exp/imp (old import/export )?
Imp and exp are client products, in the same way as SQL*Plus or Oracle Forms and will therefore translate characters from the database character set to that defined by NLS_LANG. The character set used for the export will be stored in the export file and, when the file is imported, the import will check the character set that was used. If it is different to that defined by NLS_LANG at the import site, the characters will be translated to the import character set and then, if necessary, to the database character set.
References:
Note:15095.1 Old Exp/Imp (not datapump) and NLS Considerations
Note:48644.1 Identifying the Export Character Set
2. How should NLS_LANG be set when using exp (old export ) ?
Oracle recommends to set the character set part of NLS_LANG environment parameter to ALWAYS the same character set as the character set of the database you are exporting.
select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
*<font color="red" size="2" face="courier">如果觉得本回复有意义,请点击本条回复右手边的Correct按钮,谢谢!</font>*
Maclean Liu
Oracle Database Administrator
Oracle Certified 10g/11g Master
www.askmaclean.com
查看上下文中的回答
exp/imp 是 client-server工具,Oracle官方推荐 exp使用 NLS_LANG变量与导出数据库的一致(Oracle recommends to set the character set part of NLS_LANG environment parameter to ALWAYS the same character set as the character set of the database you are exporting.)
建议你参考Metalink 文档:NLS considerations in Import/Export - Frequently Asked Questions (Doc ID 227332.1)
1. How does NLS affect exp/imp (old import/export )?
Imp and exp are client products, in the same way as SQL*Plus or Oracle Forms and will therefore translate characters from the database character set to that defined by NLS_LANG. The character set used for the export will be stored in the export file and, when the file is imported, the import will check the character set that was used. If it is different to that defined by NLS_LANG at the import site, the characters will be translated to the import character set and then, if necessary, to the database character set.
References:
Note:15095.1 Old Exp/Imp (not datapump) and NLS Considerations
Note:48644.1 Identifying the Export Character Set
2. How should NLS_LANG be set when using exp (old export ) ?
Oracle recommends to set the character set part of NLS_LANG environment parameter to ALWAYS the same character set as the character set of the database you are exporting.
select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
*<font color="red" size="2" face="courier">如果觉得本回复有意义,请点击本条回复右手边的Correct按钮,谢谢!</font>*
Maclean Liu
Oracle Database Administrator
Oracle Certified 10g/11g Master
www.askmaclean.com