西风居
===========================================================
MS DTS把SQL Server的数据导入到Oracle中后出现的字符集问题
===========================================================

Oracle服务器字符集为WE8ISO8859P1,使用DTS将数据从MS SQL Server2000导入到Oracle后,汉字无法正常显示。


刚开始,我认为是Oracle客户端和服务器端字符集不同引起的,但是把2者的字符集改成一样,还是不行。

通过在网上查资料,最后认为,DTS在导入数据时,默认Oracle字符集是支持汉字的,而数据传过来后,Oracle发现自己不支持,就做了一个转换。即,这个数据无论如何是不能恢复了,只能从SQL Server重新导入。

需要修改Oracle服务器的字符集。

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  219223120 bytes
Fixed Size                   451664 bytes
Variable Size             201326592 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
Database mounted.
SQL> alter session set sql_trace=true;

Session altered.

SQL> alter system enable restricted session;

System altered.

SQL> alter system set job_queue_processes=0;

System altered.

SQL> alter database open;

Database altered.

SQL> alter database character set ZHS16GBK;
alter database character set ZHS16GBK
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set

SQL> alter session set events '10046 trace name context forever,level 12';

Session altered.

SQL> alter database character set INTERNAL_USE ZHS16GBK;
alter database character set INTERNAL_USE ZHS16GBK
*
ERROR at line 1:
ORA-12721: operation cannot execute when other sessions are active

SQL> alter system set aq_tm_processes=0;

System altered.

SQL> alter database character set INTERNAL_USE ZHS16GBK;

Database altered.

重新启动服务器后,再用DTS导入汉字,就一切正常了。

whitechief 发表于:2004.12.09 16:35 ::分类: ( 计算机技术 ) ::阅读:(595次) :: 评论 (0)

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)




切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
网站链接...