服务器Oracle从8i升级到11g导出的时候是用exp命令。但是那时候8i的库用的是AMERICAN_AMERICA.US7ASCII现在用11g选择AMERICAN_AMERICA.US7ASCII字符集建库再imp导入数据存在乱码问题。还有就是这个库中有同义词,索引,db link 等等东西怎么样才能将现在的dmp文件中的字符集改成SIMPLIFIED CHINESE_CHINA.ZHS16GBK的怎么换?还有就是所有的同义词,索引,db link 不能丢。我现在又的东西就是dmp文件、这是从8i中导出来的.网上很多办法都试过了。还是没辙。
等高手。求救!!!

解决方案 »

  1.   

    你从8i做exp操作时所在的那台电脑的nls_lang设置是什么?
      

  2.   

    他的是AMERICAN_AMERICA.US7ASCII
    如果不是的话肯定会乱码的。
      

  3.   

    我在我自己的11g中把字符集调成AMERICAN_AMERICA.US7ASCII 电脑注册表中的nls_lang也调成AMERICAN_AMERICA.US7ASCII 就不会出现乱码。但是现在服务器的字符集是不能调的。
      

  4.   

    你导入自己的11g的字符集是AMERICAN_AMERICA.US7ASCII。没乱码。
    真正的目标服务器的字符集你说也是AMERICAN_AMERICA.US7ASCII,那怎么会乱码?
      

  5.   

    对不起 ,没有说清楚,就是说以前我在做测试的时候,在现在本机上建立一个数据库字符集是AMERICAN_AMERICA.US7ASCII的,将现有的dmp文件导入,如果不把注册表里的nls_lang改成AMERICAN_AMERICA.US7ASCII它显示的是乱码。因为注册表里的nls_lang是ZHS16GBK的。我现在是想将这个dmp导入不改系统注册表。
      

  6.   

    必须改nls_lang这个参数,不然必定会有字符集的转换。
    改个nls_lang又对系统没任何影响,你imp后,把它再改回原值就行了。
      

  7.   

    还是想别的办法吧,不能改,我服务器上面有两个数据库实例,一个是AMERICAN_AMERICA.US7ASCII字符集的
    还有一个是ZHS16GBK的。要是改了反正有一个得乱码。所以还是想其他办法吧~~~
      

  8.   

    重复一下问题,
    现在有Oracle8i数据库实例一个,字符集是AMERICAN_AMERICA.US7ASCII的,往11g升级,想用11g的默认字符集ZHS16GBK,这个库中有同义词,索引,db link 等等东西,怎么样才能保证完全不掉东西的情况下将数据库升级,请问我应该怎么做????