关于oracle 11g导出的dmp文件无法导入10g的问题

今天遇到一个问题,由于无法远程11g是数据库服务器,只能用exp命令导出了一张表的dmp文件;在本地导入时遇到如下错误:

IMP-00010: 不是有效的导出文件, 头部验证失败
IMP-00000: 未成功终止导入

于是我查了网上大神们的各种说法,当然有比如使用数据泵导入导出的各种方法,有一种是直接用文本编辑器修改了dmp文件中的版本号的方法,我尝试了一下确实是导入了。然而进去查了数据发现中文全是????,应该是字符集出错了。查了一下,原因是源数据库使用的字符集和现在导入的目标数据库字符集不一致,且目标数据库字符集不是源数据库字符集的超集。解决办法是修改目标数据库的字符集(这个字符集是在创建数据库实例的时候设置的),改成和源数据库一致,再执行导入操作,可以解决数据表中中文字符乱码问题。

可是我发现本地数据库服务端并没有乱码,而是我这边plsql乱码,在注册表HKEY_LOCAL_MACHINE --->SOFTWARE ---> ORACLE--->KEY_OraDb11g_home1,找到NLS_LANG,查看数值数据也确实是:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,最后发现我的环境变量并没有配置NLS_LANG,于是新建NLS_LANG:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 重启plsql后乱码就正常了。

上一篇:Oracle导入导出之dmp


下一篇:oracle导出数据库dmp文件