有一系统,oracle字符集原先使用WE8ISO8859P1,现在需要改为ZHS16GBK,请问谁能给个方法.操作系统 WinXP
oracle 版本 9.2.0.1.0原系统保存有中文数据
P:网上看了一些方法,大多是基于unix/linux系统下的,不适用windows系统

解决方案 »

  1.   

    http://blog.csdn.net/yangsongxs/archive/2007/11/02/1862911.aspxhttp://hi.baidu.com/wst321/blog/item/899df68806794b97a5c27246.html可以参考一下上面两篇文章
      

  2.   

    服务器段字符集不建议修改,而且修改也只能从子集到超集,不然会出现很多问题。 具体操作参考:WE8ISO8859P1->ZHS16GBK的步骤方法:
    http://www.builder.com.cn/2008/0116/709383.shtml
    ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  3.   

    要改的原因是因为另一个系统使用的是中文字符集,这两个系统之间目前需要进行数据的交换.看了一些办法,不知下面方法是否可行:1)重新安装数据库,选择中文字符集(安装之前导出DMP文件) .  (可否不安装而直接改呢?)2)编辑dmp文件(用ue打开),修改2,3字节为03 54(zhs16GBK的16进制码)3)将修改后的DMP文件导入到新安装的数据库中.
    改方法看似简单,不知道有谁用过( 晚上抽空再试)
      

  4.   


    修改DMP 应该是比较复麻烦的,现在dmp动不动就论G来,用UE打开,比较困难。可以先尝试用alter database CHARACTER set  命令修改下,如果能成功就可以了。如果不行,重装数据库时选择字符集。 用命令修改应该可以,楼主可以尝试下先。 下面连接中实在9i的数据库上进行的修改,10g应该也能用。 WE8ISO8859P1->ZHS16GBK的步骤方法: 
    http://www.builder.com.cn/2008/0116/709383.shtml 等会我也来做个测试。 ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  5.   


    小研究了下Oracle 字符集的设置,写了篇Blog,详细的介绍了相关的知识,供参考..Oracle 字符集的查看和修改
    http://blog.csdn.net/tianlesoftware/archive/2009/12/01/4915223.aspx
    数据库字符集在创建后原则上不能更改。不过修改字符集有2种方法可行。1. 通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。2. 通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。 
     
    5.1 修改server端字符集(不建议使用) 
    1. 关闭数据库
    SQL>SHUTDOWN IMMEDIATE2. 启动到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 ZHS16GBK; 
    SQL>ALTER DATABASE national CHARACTER SET ZHS16GBK; 
    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_useSQL>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;------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  6.   

    参考http://blog.inthirties.com/?p=516
      

  7.   

    试验了一下  tianlesoftware 推荐的 WE8ISO8859P1->ZHS16GBK的步骤方法此方法可行,而且还比较顺利,谢谢~~~`