同一个数据库,在32位和64位的windows2003下各部署了同一个消息队列,在32位机器下获取并处理消息队列无任何异常,在64位机器下保存到数据库中的中文为“?”,求解决方法

解决方案 »

  1.   

    查看数据库字符集: select * from sys.props$ where name='NLS_CHARACTERSET'; 修改数据库字符集:
     
     shutdown immediate;
     startup mount exclusive;
     alter system enable restricted session ;
     alter system set job_queue_processes = 0;
     alter system set aq_tm_processes =0;
     alter database open;
     alter database national character set AL16UTF16 ;
            如果报错则更改成:ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;
     alter database character set zhs16GBK ;
            如果报错则更改成: ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK ;
     shutdown immediate ;
     startup
    如果错误信息,请对照一下信息
    如果提示:
            ORA_12717 :Cannot issue ALTER DATABASE NATIONAL CHARACTER SET when NCLOB,NCHAR or NVARCHAR2 data exists 
    则改成以下语句:
    alter database national character set INTERNAL_USE AL16UTF16 ;
    如果提示:
            ORA-12712 :new character set must be a superset of old character set ;
    则更改使用以下语句:
    alter database CHARACTER SET INTERNAL_USE ZHS16GBK;
    如果提示:
            ORA-12721: operation cannot execult where other sessions are active 
    则更改使用以下语句:
    shutdown immediate;
    startup mount exclusive ;
    如果提示:
            ORA-01109:database not open 
    则使用以下语句:
    alter database open ;
    如果提示:
            ORA-12719:operation requires database is in restricted mode ;
    则使用以下语句
    alter system enable restricted session ;
      

  2.   

    在linux下面一切按照默认,然后也碰到类似乱码问题,纠结中。
      

  3.   

    你之前應該用UTF8類型的,我也遇到這樣,是台灣的客戶,還是多語言的,最早沒注意用UTF8,所以個別字會出現亂碼。