将一个模式导入另一个新模式-Oracle

将一个模式导入另一个新模式-Oracle,oracle,Oracle,我使用expcommandline实用程序从一个schema user1导出了一个数据dmp文件 我想使用imp命令行实用程序将此转储导入另一个新创建的(空)模式用户2 我尝试了以下几种方法: imp system/password@tesdb fromuser=user1 touser=user2 file=E:\Data\user1.dmp log=E:\Data\user1.log 我犯了一个错误 IMP-00002: failed to open user1.dmp for read

我使用
exp
commandline实用程序从一个schema user1导出了一个数据dmp文件

我想使用
imp
命令行实用程序将此转储导入另一个新创建的(空)模式用户2

我尝试了以下几种方法:

imp system/password@tesdb fromuser=user1 touser=user2 file=E:\Data\user1.dmp log=E:\Data\user1.log
我犯了一个错误

IMP-00002: failed to open user1.dmp for read
Import file: EXPDAT.DMP >

非常感谢您的帮助。

在您纠正了可能出现的dmp文件问题后,这是一种确保架构重新映射并正确导入的方法。这还将确保表空间在需要时也会发生变化:

impdp system/<password> SCHEMAS=user1 remap_schema=user1:user2 \
            remap_tablespace=user1:user2 directory=EXPORTDIR \
            dumpfile=user1.dmp logfile=E:\Data\user1.log

问题在于dmp文件本身。我不得不重新导出文件,命令运行良好。谢谢@Justin Cave

该错误似乎表明问题出在转储文件本身。您确定该文件存在于本地计算机上的e:\data目录中吗?您确定您登录的Windows用户有权访问此文件吗?其他进程是否锁定了文件?如果要重新映射架构,最简单的解决方案是停止使用
exp
/
imp
并开始使用数据泵实用程序:
expdp
impdp
您无法使用数据泵导入使用
exp
创建的转储文件。哎呀。。。我没有注意到他们使用的是exp而不是expdp。如果使用expdp:P+1创建,我会工作,因为如果使用expdp创建转储,这将是一个很好的答案。转储文件应该包含源架构和表空间,否则映射将不会发生。
create or replace directory EXPORTDIR as 'E:\Data';
grant read, write on directory EXPORTDIR to user2;