oracle8.0.5服务器端是us7ascii,但exp时客户端是 WE8ISO8859P1,这时导出的dmp文件还有用吗?怎样用才可解决中文显示问题?
(事情原委:我有两台oracle服务器,一台用us7ascii,另一台用WE8ISO8859P1,做完WE8ISO8859P1这台服务器的数据备份时忘记把注册表中NLS_LANG相关值更改,就马上去做us7ascii这台服务器的exp导出。现在这台us7ascii服务器出了问题重装了oracle,在倒回数据时才发现出了问题)我现在是叫天不应叫地不灵,只好求助各位大侠了,大家可要帮我啊!!!

解决方案 »

  1.   

    把这台us7ascii的服务器上的oracle重装,改成WE8ISO8859P1,然后客户端NLS_LANG相应也改成WE8ISO8859P1,再导入这个dmp到服务器中,不知可否?大家说说啊
      

  2.   

    us7ascii是WE8ISO8859P1的子集,所以可以有us7ascii到WE8ISO8859P1,但是反过来应该不行叻。上面的方法是个方法,不过你可以试试强行修改字符集,注意修改前,一定备份好数据库。强行修改字符集参考
    http://bbs.inthirties.com/thread-90-1-1.html
    这里只是试试,不知道能不能成功有关子集和超集的收集
    参考
    http://bbs.inthirties.com/thread-89-1-1.html
      

  3.   

    谢谢inthirties!
    就按你的方法再试试看
      

  4.   

    我把服务器的字符集强行改成了we8iso8859p1,用
    select userenv('language') from dual; 可看到修改成功,但在客户端NLS_LANG为we8iso8859p1的情况下把那个dmp文件导入到服务器中文还是乱码啊,乍办啊?大家快帮我啊!!!
      

  5.   

    我强行更改字符集的过程如下,若有问题,请大家指出来,拜托了。
    $svrmgrl
    svrmgr>connect system/manager as sysdba;
    svrmgr>shutdown  immediate;
    svrmgr>startup  mount;
    svrmgr>alter  system  enable  restricted  session;
    svrmgr>alter  system  set  job_queue_processes=0;
    svrmgr>alter  system  set  aq_tm_processes=0;
    svrmgr>alter  database  open;
    svrmgr>alter  database  character  set  we8iso8859p1;
    svrmgr>alter  database  national  character  set  we8iso8859p1;
    svrmgr>shutdown  immediate;
    svrmgr>startup