发表于: 2004.12.09 16:35
分类: 计算机技术
出处: http://whitechief.itpub.net/post/1825/9236
---------------------------------------------------------------
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导入汉字,就一切正常了。











