oracle11g用exp命令导出的dmp文件10g是不能识别的,网上有一种方法就是用notepad++修改dmp文件的版本号(不知道为什么用editplus修改就不行),修改完成之后是可以导入的,表什么的也都对,目前还不清楚有什么缺点,只不过报了一大堆错
其实最好的办法就是用10g的客户端连接oracle11g然后用exp命令导出,下面讲得就是这个办法
工具/原料
-
oracle10g电脑一台
-
oracle11g电脑一台
-
此方法的前提是10g电脑可以ping通11g的电脑
方法/步骤
-
在10g的电脑上操作:
打开oracle10g中的Net Manager,具体路径如下图
-
然后点击 服务命令,如下图,此时左侧绿色的加号就可以点了,点击新建
-
给远程连接起一个服务名,待会导出的时候会用到此名称,这里起名test_orcl,下一步
-
然后协议选择TCP/IP即可,下一步
-
主机名这里填11g电脑的ip地址,首先需要确保在10g电脑上可以ping通这个ip地址如下图,端口号一般默认
-
因为我们连接的是11g,所以选择第一个,服务名一般没改过的话都是orcl
-
设置完成,可以测试一下,默认是用的scott/tiger来测试的,当然如果你改过scott的密码或者scott用户没有解锁,可以点击 更改登录 换一个账户测试
测试成功的前提条件当然是10g的电脑可以ping通11g的电脑,而且前面的操作都正确
-
完成后不要忘记保存网络配置,具体操作如下图
-
此时已经建立好连接了,用命令导出一下看看,打开10g电脑的命令提示符,输入如下命令:
exp userid=exam/exam@test_orcl file=c:\exam.dmp log=c:\exam.log
注:
1.exam/exam为11g电脑上的用户连接名和密码
2.@test_orcl是前面几步用net manager建立的连接
3.后面的是dmp和log文件保存的位置(下图命令有错,可以看上面手打的)
-
如下图已经可以正常导出了,导出的dmp文件的头部版本号就是这个10g的客户端的版本,然后直接用imp命令就可以导入到当前10g的数据库了
命令参考如下:
imp userid=exam/exam@orcl fromuser=exam touser=exam file=c:\exam.dmp log=c:\exam.log
END
注意事项
-
整个过程只在10g的电脑上操作,局限性就是10g的电脑需要可以与11g的电脑正常通信
-
假如条件不满足,可以修改11g导出的dmp文件第一行的版本号(建议用notepad++修改),修改完成后可以导入,不过会报很多的错,但是目前没有发现什么异常