错误原因: Oracle 版本中IMP和EXP的兼容问题。
我这里是因为本机上的oracle版本高于服务器上的oracle版本
解决办法:
安装和服务器同版本的10g客户端,在命令窗口化中切换到10g客户端的bin目录下面进行导入就ok了。
为什么要切换呢,因为你的环境变量是设置成11g的导出工具,你需要手动指定你当前导出工具的版本。
网上其他办法:
其实我大致就知道怎么解决了,因为安装完oracle server后也会自己带有exp工具的,这个exp工具的版本是和server一致的,也就是说他的环境中的默认的exp工具是他client的exp工具,而不是server的exp工具,那么只要把默认的exp工具改为server的就可以了,所以把环境变量改下就OK了,怎么改?看下面的。之前的环境变量path下是这样的:path=E:\oracle11g\product\client32admin\product\11.2.0\client_1\bin;(其它省略)根据名字可以看到指向的是client的路径,改为指向server的路径(E:\oracle11g\product\11.1.0\db_1\BIN)path=E:\oracle11g\product\11.1.0\db_1\BIN;(其它省略)
解决办法:在环境变量中建oracle_home,路径是bin 的上一级,如:你的bin在d:\oracle\bin,那么变量值设置为d:\oracle.
注:不同版本的oracle环境变量不一样,就拿我11g的来说,上面两种思路行不通
Oracle的imp/exp组件的操作原则–向下兼容,且有一些规则:
规则1:低版本的exp/imp可以连接到高版本(或同版本)的数据库服务器,但高版本的exp/imp不能连接到低版本的数据库服务器;
规则2:高版本exp出的dmp文件,低版本无法imp(无法识别dmp文件);低版本exp出的dmp文件,高版本可以imp(向下兼容);
规则3:从Oracle 低版本Export的数据可以Import到Oracle高版本中,但限于Oracle的相邻版本,如从Oracle 10 到 Oracle 11.对于两个不相邻版本间进行转换,如从Oracle 9 到 Oracle 11,则应先将数据输入到中间版本-Oracle 10,再从中间数据库转入更高版本Oracle 11。