我从测试环境的服务器上的oracle数据库导出了一个数据库文件,导出语句为:exp gsc/password@orcl file="d:\wang0704.dmp" full=y.我在自己电脑上装了个oracle 10g,想把这个数据库文件导进去,我创建了表空间orcl,创建了gsc用户,赋给了gsc用户dba权限,然后再dos窗口下执行导入语句:imp gsc/password@orcl file=d:\wang0714.dmp ignore=y full=y.结果报错:IMP-00058   IMP-00000 未成功终止导入。怎么回事,请给位大侠帮忙,后学晚辈请教!

解决方案 »

  1.   

    测试环境的数据库版本是9i,我自己机器上装的事实10g  这个有影响吗?从9i往10g导不可以吗?
      

  2.   

    楼上,表空间相同,都是orcl,用户也相同,都是gsc,权限也相同,都是dba,路径也相同,都在D盘根目录下,那为什么还是不行呢?
      

  3.   


    即时是同一个版本的Oracle,只要是小版本不一样,数据也是无法导入的。
    你可以在导出数据的时候使用低版本的exp,还有一个办法就是更改导出数据文件的头,以前在哪个博客中看到过,不过忘记了,就是利用更改dmp文件头部的版本号来骗过imp。
      

  4.   

    谢谢楼上指点,不过你说的改头文件的方法我也有查过,但是没有成功。再请问,怎样使用低版本的exp?赐教!
      

  5.   


    C:\Oracle\product\10.2.0\db_1\bin\
    目录下有exp.exe这个文件,
    比如你现在存放数据的数据库是10G的,但是要导入到9i的数据中,你可以把9i这个目录中的文件拷贝一个,放到这里,然后在使用备份,记得备份原来的。这样理论上应该可以,我也没有试过。
    如果这样不行的话,最简单的,你安装一个比存放数据更高版本的Oracle,如果你只是做开发用版本高一点也无所谓拉~或者把你本机的Oracle卸载掉,安装成和服务器大版本一样的数据库,或者是大版本一样,小版本比服务器高一点也可以的~