将你做导入的那部机器的环境变量NLS_LANG设为
AMERICAN_AMERICA.WE8ISO8859P1
再试试导入

解决方案 »

  1.   

    现在有一个备份文件A.DMP,采用的字符集是AMERICAN_AMERICA.WE8ISO8859P1  我想在安装有SIMPLIFIED CHINESE_CHINA.ZHS16GBK字符集的数据库中恢复,请问怎样做?要注意什么?步骤。
        1。SQL>CONNECT SYSTEM/MANAGER      SQL>UPDATE SYS.PROPS$ SET VALUE$='WE8ISO8859P1' WHERE NAME LIKE 'NLS_CHAR%';
        2.修改注册表,NLS_LANG的值为AMERICAN_AMERICA.WE8ISO8859P1
        3。重新启动数据库。
       IMP USER/PA WD FILE=A。DMP FULL=Y LOG = A.TXT
       ok! 
    --------------------------------------------------------------------------------------------------
    1. 2服务器指定字符集与客户字符集相同,与加载数据字符集不一致。  ---- 这类问题一般发生在ORACLE版本升级或重新安装系统时选择了与原来服务器端不同的字符集,而恢复加载的备份数据仍是按原字符集卸出的场合,以及加载从其它使用不同字符集的ORACLE数据库卸出的数据的情况。这两种情况中,不管服务器端和客户端字符集是否一致都无法显示汉字。解决办法见2.2。  2.2 强制加载数据字符集与服务器端字符集一致  ---- 假设要加载数据从原ORACLE数据库卸出时的字符集为US7ASCII,当前ORACLE服务器字符集为WE8ISO8859P1。  ---- 下面提供三种解决方法:  ---- (1) 服务器端重新安装ORACLE  ---- 在重新安装ORACLE 时选择与原卸出数据一致的字符集(本例为US7ASCII)。  ---- 加载原卸出的数据。  ---- 这种情况仅仅使用于空库和具有同一种字符集的数据。  ---- (2)强行修改服务器端ORACLE当前字符集  ---- 在用imp命令加载数据前,先在客户端用sql*plus登录system DBA用户,执行下列SQL语句进行当前ORACLE数据库字符集修改:   SQL > create database  character set US7ASCII 
    * create database character set US7ASCII 
          ERROR at line 1: 
    ORA-01031: insufficient privileges 
    ---- 你会发现语句执行过程中,出现上述错误提示信息,此时不用理会,实际上ORACLE数据库的字符集已被强行修改为US7ASCII,接着用imp命令装载数据。等数据装载完成以后,shutdown 数据库,再startup 数据库,用合法用户登录ORACLE数据库,在sql>命令提示符下,运行select * from V$NLS_PARAMETERS,可以看到ORACLE数据库字符集已复原,这时再查看有汉字字符数据的表时,汉字已能被正确显示。  ---- (3)利用数据格式转储,避开字符集限制  ---- 这种方法主要用于加载外来ORACLE数据库的不同字符集数据。其方法如下:  ---- 先将数据加载到具有相同字符集的服务器上,然后用转换工具卸出为foxbase 格式或access格式数据库,再用转换工具转入到不同字符集的ORACLE数据库中,这样就避免了ORACLE字符集的困扰。目前数据库格式转换的工具很多,象power builder5.0以上版本提供的pipeline,Microsoft Access数据库提供的数据导入/导出功能等。转换方法参见有关资料说明。.  
      

  2.   

    to:beckhambobo(beckham) 不行啊 ,本来导入的中文是?????,现在导入是乱码
    如:Ðì×Ü£ºÄúºÃ£¡¹¤×÷¼Æ»®1¡¢»¯¹¤²úÆ·ÓÉÁõ¾²¡¢ºØÀö¡¢ËÎÓñÁá×ö£¬±¾Ô¼ƻ®Íê³É450Ò³×óÓÒ£¨ÏÖÔÚÿÈËƽ¾ùÊ£Óà800Ò³£©
    怎么会事啊?
    而且UPDATE SYS.PROPS$ SET VALUE$='WE8ISO8859P1' WHERE NAME LIKE 'NLS_CHAR%';
    这句好像一直可以执行,执行完后再执行,还是会有一行数据更新。现在导入时的信息为:
    C:\Documents and Settings\Administrator\桌面\elmdz1.dmp>imp QS_CS/111111@oracledbImport: Release 9.2.0.1.0 - Production on Fri Jan 16 09:32:59 2004Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
    Connected to: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - ProductionImport file: EXPDAT.DMP > elmdz1.dmpEnter insert buffer size (minimum is 8192) 30720>Export file created by EXPORT:V08.01.06 via conventional pathWarning: the objects were exported by ELMDZ, not by youimport done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
    export server uses US7ASCII NCHAR character set (possible ncharset conversion)
    List contents of import file only (yes/no): no >Ignore create error due to object existence (yes/no): no >Import grants (yes/no): yes >Import table data (yes/no): yes >Import entire export file (yes/no): no >
    Username: ELMDZEnter table(T) or partition(T:P) names. Null list means all tables for user
    Enter table(T) or partition(T:P) name or . if done:
      

  3.   

    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
    导出客户机使用WE8ISO8859P1字符集 (可能的字符集转换)
    导出服务器使用US7ASCII NCHAR 字符集 (可能的ncharset转换)
    import done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
    export server uses US7ASCII NCHAR character set (possible ncharset conversion)从这几句中能看出2台oracle机器字符集的信息吗?怎么改?
      

  4.   

    把导入数据库的字符集改成与导出数据库的字符集不就可以啦,
    修改注册表:搜nls_lang
      

  5.   

    to:pingshx() 
    能具体一点吗?我把注册表的nls_lang值改为US7ASCII NCHAR,结果不能启动oracle了。改回成AMERICAN_AMERICA.WE8ISO8859P1又好了。我到底应该把字符集改成什么啊?
      

  6.   

    http://expert.csdn.net/Expert/topic/2656/2656694.xml?temp=.57539