我想最简单的方法是:
保证export session 的nls_lang 和import session 的nls_lang 一样。 (再NT下,用修改注册表的方法:HKEY_LOCAL_MACHINE->software->oracle->NLS_Lang;  在UNIX下,设置正确的环境变量NLS_LANG ).
这样,在import 过程中,字符转换只会发生一次(当数据插入数据库时,而这个转换是自动的)  关于如何确认export 文件的nls_lang , 请参照: NOTE:48644.1 in metalink.oracle.com: The second and the third byte in the file define the character set used for the export.
US7ASCII 0x0001 
WE8DEC 0x0002 WE8ISO8859P1 0x001f EE8ISO8859P2 0x0020 SE8ISO8859P3 0x0021 NE8ISO8850P4 0x0022 CL8ISO8859P5 0x0023 AR8ISO8859P6 0x0024 EL8ISO8859P7 0x0025 IW8ISO8859P8 0x0026 WE8ISO8859P9 0x0027 TH8TISASCII 0x0029 WE8ROMAN8 0x0005 WE8PC850 0x000a US8PC437 0x0004 EE8PC852 0x0096 EE8MSWIN1250        0x00aa
CL8MSWIN1251       0x00ab EL8MSWIN1253     0x00ae
WE8MSWIN1252     0x00b2 JA16EUC 0x033e JA16SJIS 0x0340
ZHT16BIG5   0x0361

解决方案 »

  1.   

    由于本人初次接触orcale.
    我手头上仅仅有此备份文件04111614.dmp。而且我并不知道原先数据库字符集情况,只知是8.0。
    现在具体如何修改?
      

  2.   

    用你现在的oracle导出一个dmp来
    用uledit打开两 个dmp,将第三个字符改为和现在的oracle导出一个dmp一样的
      

  3.   

    用uledit打开两个dmp文件,情况如下(前两行):新库:
    03 03 54 45 58 50 4F 52 54 3A 56 30 38 2E 30 31;..TEXPORT:V08.01
    2E 30 37 0A 44 53 59 53 54 45 4D 0A 52 54 51 52;.07.DSYSTEM.RTAB老库:
    03 00 1F 45 58 50 4F 52 54 3A 56 30 38 2E 30 30;..TEXPORT:V08.00
    2E 30 35 0A 44 44 4C 44 46 0A 52 45 4E 54 49 52;.05.DDLDF.RENTIR修改过第三个字符,在导入是报错如下:
    IMP-00038: 无法转换为环境字符集句柄不知为何,请指教,谢谢!