初次在生产机上做数据库字符集更改,不知道做之前各位前辈有什么忠告?听说搞不好就下岗了!真是高危职业!

解决方案 »

  1.   


    做之前做好备份, 操作步骤参考下面:
    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_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的区域设置就没有问题本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tianlesoftware/archive/2009/12/02/4915223.aspx
    ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    DBA1 群:62697716(满); DBA2 群:62697977(满)
    DBA3 群:62697850   DBA 超级群:63306533;     
    聊天 群:40132017
    --加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请
      

  2.   

    问一下4楼的,我的字符集是SIMPLIFIED CHINESE_CHINA.ZHS16GBK  要把它转成Unicode (AL32UTF8),你说的那些步骤适合吗?