2013-02-28 66 views
8

我有一个使用exp命令行实用程序从一个模式user1导出的数据dmp文件。将一个模式导入另一个新模式 - Oracle

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

我尝试了一些事情,如:

imp system/[email protected] 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 > 

任何帮助表示赞赏。

+1

错误似乎表明问题出在转储文件本身。你确定该文件存在于本地机器的e:\ data目录中吗?您确定您登录的Windows用户有权访问此文件吗?其他进程是否有文件被锁定? – 2013-02-28 18:25:05

+0

如果要重新映射模式,最简单的解决方案是停止使用'exp' /'imp'并开始使用DataPump实用程序:'expdp'和'impdp' – 2013-02-28 21:36:04

回答

1

的问题是与dmp文件本身。我不得不重新导出文件,命令正常工作。谢谢@Justin Cave

23

在您更正了可能的dmp文件问题后,这是一种确保架构被重新映射并适当导入的方法。这也将确保表空间也将发生变化,如果需要的话:

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

EXPORTDIR必须在Oracle中被定义为一个目录作为系统用户

create or replace directory EXPORTDIR as 'E:\Data'; 
grant read, write on directory EXPORTDIR to user2; 
+1

您无法使用DataPump导入使用'exp'创建的转储文件。 – 2013-02-28 21:35:18

+0

糟糕...我错过了他们使用exp而不是expdp。我会工作,如果它创建使用expdp:P – Adam 2013-02-28 21:43:48

+0

+1,因为如果转储是使用expdp创建的,这将是一个很好的答案。 – Saleika 2013-10-15 09:52:20

相关问题