本帖最后由 zhanggnol 于 2011-12-15 20:40:00 编辑

解决方案 »

  1.   

    把INTERNAL_USE 去掉不行么?
      

  2.   

    啊知道了
    你先把服务器的character 设置成UTF8,然后再去改NATIONAL CHARACTER。就是,先执行:
    SQL> alter database character set UTF8; 
    alter database character set UTF8
    ORA-12712: new character set must be a superset of old character set --忽略该错然后再执行:
    SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8;
      

  3.   


      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我执行的上面的语句,
    SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;  这步的时候,提示:新字符集必须为旧字符集的超集。
    我也按照网上说的,忽略,继续执行   SQL>ALTER DATABASE national CHARACTER SET ZHS16GBK;,网上说的这步能直接执行成功,但是我这边的服务器上还是提示:“ERROR 位于第 1 行:
    ORA-12714: 指定的国家字符集无效”。
      

  4.   


    没事 已经解决了。其实都不知道咋解决的。numenhuangsvrmgrl>shutdown immediate;
    svrmgrl>startup mount;
    svrmgrl>alter system enable restricted session;
    svrmgrl>alter system set job_queue_processes=0;
    svrmgrl>alter database open;

    svrmgrl>alter database character set ZHS16GBK;
    svrmgrl>alter database national character set ZHS16GBK;
    这里如果遇到superset的问题,则可以用这两句来代替:
    alter database character set set INTERNAL_USE ZHS16GBK;
    alter database national character set INTERNAL_USE ZHS16GBK;

    svrmgrl>shutdown immediate;
    svrmgrl>startup;