DataServices抽数中文乱码解决方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DataServices中文乱码解决方案
--朱兴太 2014年12月25日
本问题经常出现在DataServices服务器安装在AIX、UNIX、Linux系统上面,在不同数据库之间抽取数据的时候中文出现乱码。

主要解决方法有以下几步:
1,检查目标数据库的字符集编码是否正确,建议在创建数据库实例的时候要选择正确的字符集。

例如在苏酒项目中,因数据库实例是客户自己创建的,在选择字符集的时候默认成了英文编码,建议默认的时候选择AL32UTF8。

如果不是AL32UTF8,我们可以通过命令修改。

修改方法如下:
修改server端字符集
1. 关闭数据库
SQL>SHUTDOWN IMMEDIATE
2. 启动到Mount
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP
注意:如果没有大对象,在使用过程中进行语言转换没有什么影响,(切记设定的字符集必须是ORACLE支持,不然不能start)按上面的做法就可以。

若出现‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists’这样的提示信息,
要解决这个问题有两种方法
1. 利用INTERNAL_USE 关键字修改区域设置,
2. 利用re-create,但是re-create有点复杂,所以请用internal_use
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT EXCLUSIVE;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SQL>SHUTDOWN immediate;
SQL>startup;
如果按上面的做法做,National charset的区域设置就没有问题
查看Oracle服务器字符集方法:
selectuserenv('language') from dual;
2,若果按照上面的方法修改字符集之后还是出现乱码,那么进行本步骤,在AIX系统的环境变量中设置中文字符集编码、
a) 以bodi身份登录AIX
b) Vi .profile
c) 加入“export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK”,保存退出
d) 执行. .profile
e) 重启JobServer。

f) 在DataServices的DataStore里面设置code page
说明:
另外本人还有一种猜想,但并未经过验证。

如果将.profile中的
“export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK”
换成
“export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK”
就不需要后面修改code page的操作了,你可以试试看。

3,如果以上两部操作之后还出现乱码,请尝试下面方法,请切换到DataServices的bin目录下面:
[di@dwtestapp bin]$ ./startLocaleSelector.sh
Warning: No X-window is configured correctly, The program will start a command interface, Do you want to continue (Y/N)?
y
Enter a number to select Product Locale.
1 : English
n : Next
q : Quit
Enter Option : n
Enter a number to select Server Log Locale.
1 : English
n : Next
p : Previous
q : Quit
Enter Option : n
Specify the language, territory, and code page to use for the repository connection
and for processing data.
1 : Use default database locale
2 : Configure the locale manually
n : Next
p : Previous
q : Quit
Enter Option : 2
Enter a locale directly (Y) or select from option list (N)?
Enter Option : n
Enter a number to select Data Processing locale. Press "n" to see next page. Press "p" to see previous page.
0: <default> 1: Afrikaans (Namibia) 2: Afrikaans (South
Africa)
3: Albanian (Albania) 4: Amharic (Ethiopia) 5: Arabic
(Algeria)
6: Arabic (Bahrain) 7: Arabic (Egypt) 8: Arabic
(Iraq)
9: Arabic (Jordan) 10: Arabic (Kuwait) 11: Arabic
(Lebanon)
12: Arabic (Libya) 13: Arabic (Morocco) 14: Arabic
(Oman)
15: Arabic (Qatar) 16: Arabic (Saudi Arabia) 17: Arabic
(Sudan)
18: Arabic (Syria) 19: Arabic (Tunisia) 20: Arabic (United Arab Emirates)
21: Arabic (Yemen) 22: Armenian (Armenia) 23: Assamese
(India)
24: Azerbaijani (Azerbaijan) 25: Basque (Spain) 26: Belarusian
(Belarus)
27: Bengali (Bangladesh) 28: Bengali (India) 29: Bulgarian
(Bulgaria)
30: Catalan (Spain) 31: Chinese (China) 32: Chinese (Hong Kong SAR China)
33: Chinese (Macau SAR China) 34: Chinese (Singapore) 35: Chinese
(Taiwan)
36: Cornish (United Kingdom) 37: Croatian (Croatia) 38: Czech (Czech
Republic)
39: Danish (Denmark) 40: Dutch (Belgium) 41: Dutch (Netherlands)
42: English (Australia) 43: English (Belgium) 44: English
(Belize)。

相关文档
最新文档