import 导入文件时遇到
"不支持要求的字符集转换(从类型850至852)"
这个问题,请高手指教。

解决方案 »

  1.   

    在进行exp 操作前,一定保证当前环境(操作系统)变量与Oracle 中的 props$字典中的值一致。否则在将来的imp 操作完成后会得不到正确的汉字。
    UNIX环境:
    要确保NLS_LANG和ORA_NLS33 的正确,如:NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280; export NLS_LANG 
    ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33WINDOWS NT环境:
    用regedit 修改注册表中的所有ORACLE字符集项,如:1)点击:开始=》运行=》输入regedit;
    2)点击“HEY_LOCAL_MACHINE”左边的“+”以展开目录;
    3)点击“SOFTWARE”左边的“+”以展开目录;
    4)点击“ORACLE”项;
    5)修改ORACLE树下所有“NLS”变量与props$中的一致。
     在进行exp 操作前,一定保证当前环境(操作系统)变量与Oracle 中的 props$字典中的值一致。否则在将来的imp 操作完成后会得不到正确的汉字。
    UNIX环境:
    要确保NLS_LANG和ORA_NLS33 的正确,如:NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280; export NLS_LANG 
    ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33WINDOWS NT环境:
    用regedit 修改注册表中的所有ORACLE字符集项,如:1)点击:开始=》运行=》输入regedit;
    2)点击“HEY_LOCAL_MACHINE”左边的“+”以展开目录;
    3)点击“SOFTWARE”左边的“+”以展开目录;
    4)点击“ORACLE”项;
    5)修改ORACLE树下所有“NLS”变量与props$中的一致。
      

  2.   

    当前环境Oracle的字符集与原来导出时的字符集不一致如果当前的Oracle 数据库系统的字符集与原来导出时的字符集不一致,则需要修改当前的Oracle系统的字符集,使之与原来的字符集一致。方法如下:方法1重新安装Oracle Rdbms:
    采用自定义安装,重新安装Oracle Rdbms,并设置字符集与导出时的字符集一致。并用下面方法正确设置环境变量:
    UNIX环境:
    要确保NLS_LANG和ORA_NLS33 的正确,如:
    NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280; export NLS_LANG 
    ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33安装时选择希望的字符集。WINDOWS NT环境:
    用regedit 修改注册表中的所有ORACLE字符集项,如:
    1)点击:开始=》运行=》输入regedit;
    2)点击“HEY_LOCAL_MACHINE”左边的“+”以展开目录;
    3)点击“SOFTWARE”左边的“+”以展开目录;
    4)点击“ORACLE”项;
    5)修改ORACLE树下所有“NLS”变量与props$中的一致。方法2 修改数据库字符集:
    使用 ALTER DATABASE CHARACTER SET 修改字符集。然后再进行imp.
    修改字符集的步骤如下:SQL> connect internal
    SQL> STARTUP MOUNT;
    SQL> ALTER SYSTEM ENABLE RESTRICED SESSION;
    SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
    SQL> ALTER DATABASE OPEN;
    SQL> ALTER DATABASE CHARACTER SET <new_character_set_name>;
    SQL> SHUTDOWN IMMEDIATE; -- or NORMAL
    SQL> STARTUP;当前操作系统环境变量的字符集与原来导出时的字符集不一致如果是当前操作系统环境变量与原来导出的字符集不一致(即当前的操作系统自费集与Oracle的字符集不一致),则按照上面介绍的方法修改当前的字符,然后在运行imp即可。方法3 修改环境字符集:
    另外的办法可以是:
    1. 可以修改你的系统环境字符集与希望导入的环境字符集一致;
    2. 用EXP实用程序进行执行数据库导出;
    3. 将导出的 .DMP文件拷贝到目标环境中;
    4. 确认目标环境的字符集与源环境一致;
    5. 用IMP实用程序进行执行数据库导入。
      

  3.   

    我不知道本身那个.dmp文件是什么字符集???
      

  4.   

    2004.8.13??850 好像是繁体吧 
    852 是简体。。ORACLE 这个字符集烦死了 我也刚找这方面的
      

  5.   

    850     ZHS16CGB231280
    852     ZHS16GBK
    楼主 “echo %NLS_LANG%”看看是不是AMERICAN_AMERICA.ZHS16CGB231280”
    改为“set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK”