拿到一dmp文件(美国那边公司发过来的),是从oracle10.1.0导出,我要将其导入到我这儿的oracle9i中,不知道导出的是什么字符集,imp时显示“不支持要求的字符集转换(从类型178到852)”
我改了props$中字符集类型,可还是不行,请各位帮忙,多谢!

解决方案 »

  1.   

    从高版本导出的DMP是不能导入低版本的,我遇到这种情况的时候,通常是先找一个oracle10.1.0的Oracle服务器,将DMP导入其中,再用oracle9i的客户端连到oracle10.1.0服务器,用oracle9i的EXP导出数据,这时生成的DMP就可以导入Oracle9中了。
      

  2.   

    wangybyangxr(王永斌) 说的可以吗?有新意
      

  3.   

    这个问题在csdn上是经常出现的,建议你搜索一下,比如用关键字导入或者852等等,肯定会有一大堆的类似问题的帖子,一定会从中找到答案的。
      

  4.   

    另外,用nls_charset_name函数可以查到代码对应的字符集:
    select nls_charset_name(178) from dual;
    select nls_charset_name(852) from dual;
      

  5.   

    一个比较简单的方法,用ultraedit打开导出文件,文件头的第2、3两位就是字符集类型(注意这里是16进制,并且低端在前,高端在后)然后改为你数据库的字符集(也就是852),现在导入就可以了。因为是从美国过来的,全英文字符,所以不会出现乱码的问题。
      

  6.   

    一个比较简单的方法,用ultraedit打开导出文件,文件头的第2、3两位就是字符集类型(注意这里是16进制,并且低端在前,高端在后)然后改为你数据库的字符集(也就是852),现在导入就可以了。因为是从美国过来的,全英文字符,所以不会出现乱码的问题。
      

  7.   

    nls_charset_name函数可以查到代码对应的字符集:
    select nls_charset_name(178) from dual;
    select nls_charset_name(852) from dual;
    用ultraedit打开导出文件,文件头的第2、3两位就是字符集类型(注意这里是16进制,并且低端在前,高端在后)然后改为你数据库的字符集(也就是852),现在导入就可以了。因为是从美国过来的,全英文字符,所以不会出现乱码的问题这种办法不是百分之百能解决问题,但是还是可行的,如果你不知道修改那里,你就点击ultraedit打开后文件的最右边的可读的文字,就显示你应该修改16进制的哪里
      

  8.   

    哪能得到oracle10g?用yujiabian(流氓兔子雨) 的方法我改了,可又出现如下错:
    经由常规路径导出由EXPORT:V09.00.01创建的文件
    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
    导入服务器使用WE8MSWIN1252字符集 (可能的字符集转换)
    IMP-00003: 遇到 ORACLE 错误 96
    ORA-00096: 值 UNUSEDRETED 对参数 plsql_compiler_flags 无效,它必须来自 NON_DEBUG
    , DEBUG, INTERPRETED, NATIVE 之间
    IMP-00000: 未成功终止导入
    怎么处理?请帮忙,多谢了!!!