oracle11g的dmp文件导入oracle10g时报错:头部验证失败---解决,oracle11goracle10g
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。
深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/40152785
今日研发人员遇到dmp文件无法导入的问题:
问题描述:
11g库导出的dmp文件,导入到10g的库中时报如下错误:
解决思路:
发生这个问题的原因,正如现象描述的一样,由于导出是发生在11g的环境下,而导入是发生在10g的环境下。对于dmp文件的导入、导出,oracle是存在向下兼容的,也就是说当由10g库导出的dmp文件是可以直接导入到11g的库里,但是11g的库导出的dmp文件,是需要进行版本修改让oracle10g能够识别出来才可以。
解决方式:
使用Notepad++工具打开dmp文件,会在最前面看到版本信息如下:
--TEXPORT:V11.01.00
查看源端数据库版本为10.2.0.1.0,因此将版本信息改为:
--TEXPORT:V10.02.00
再次执行导入成功导入dmp文件。
后续问题:
经研发的另一位同事的点拨,当文件过大时,直接打开的话内存就加载不进来,如何完成导入操作呢?
在网上查了查,原来有人编写了一个c#小软件也可以完成这个任务,并且解决了当文件过大时的问题。
下载链接:
http://up.2cto.com/2012/0322/20120322023105139.rar
可以参考其它网友的文章,链接如下:
http://www.2cto.com/database/201203/124310.html
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。
深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/40152785
你所在的数据库的用户名下已经有了这张表,你再导入的话,当然就导不进去了。你可以试着再建一个用户名,赋予这个用户名connect和dba权限,然后用新建的用户名登陆进数据库,然后再导入,应该就没问题了。
imp odm/odm@odm file=I:\odm.dmp fromuser=odm touser=odm ignore=y
这样写的话忽略数据库对象存在的报错,不过你的数据可能会有重复。不想重复的话:
1、导出时使用query选项,将你需要的更新的数据导出(前提是你的数据能有分辨是否是更新项的字段)。
2、在你的电脑中将数据删除(delete或truncate,个人建议truncate),那样导入的都是最新的数据了。
3、drop你电脑中odm的所有对象,用在imp时会自动建立。