首先,您应该使用impdp而不是imp。并且不要忘记在做任何事情之前进行备份。此外,您应该将 dmp 文件放在服务器的本地目录中。我见过有人试图导入位于他们计算机硬盘上的 dmp 文件。事情不是这样运作的。
如果您要导入现有架构以获得更好的结果,我建议您删除架构。
要删除现有架构,请使用管理员帐户登录 sqlplus
sqlplus 用户名/密码@connect_identifier
然后您可以使用此命令删除架构:
DROP USER <SCHEMA_NAME> CASCADE;
查询您的数据库以查看是否定义了数据泵目录
SELECT directory_name, directory_path FROM dba_directories WHERE directory_name='DATA_PUMP_DIR'
如果没有定义目录使用这个命令来定义(顺便说一句“D:\orcl12”是我的oracle实例路径,你应该使用你自己的路径)
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS 'D:\orcl12c/admin/<ORA_INSTANCE_NAME>/dpdump/';
退出 sqlplus 到命令提示符并使用管理员凭据运行 impdp(确保源目录上没有其他同名的日志文件 - 如果是这样,操作将中止)
impdp 用户名/密码@connect_identifier directory=DATA_PUMP_DIR dumpfile=filename.dmp logfile=filename.log
如果操作成功,您可能必须手动更新用户定义的数据类型,因为它们没有正确导入。