2018/09/30

用impdp恢复expdp备份的某个表到另一Schema

有人把资料维护错了,后来偷偷改了,又不承认😠,逼得我去把备份的资料恢复出来,给她难堪……

因为是expdp备份的,对应的恢复就用impdp啦。

简单介绍下环境:Tiptop ERP的Oracle数据库,在Linux下运行,要从正式Schema(al1)的备份恢复到测试的Schema(ostest),只需恢复ima_file这个表。

直接上指令了:
impdp directory=EXPDP_DIR dumpfile=full_20180929.dmp logfile=imp_ostest_ima_20180930.log schemas=ostest include=table:\"in \'ima_file\'\"
没成功,错误提示:
ORA-31655: no data or metadata objects selected for job
原来是因为没有指明来源的Schema,调整指令为:
impdp directory="EXPDP_DIR" dumpfile=full_20180929.dmp logfile=imp_ostest_ima_20180930.log remap_schema=al1:ostest tables=al1.ima_file table_exists_action=replace
这样就OK了,如果没有加table_exists_action=replace,而目标Schema中已存在这个表,则会出现错误:
ORA-39151: Table "OSTEST"."IMA_FILE" exists. All dependent metadata and data will be skipped due to table_exists_action of skip
参考资料:OracleOnLinux

1 条评论:

匿名 说...

如果需要更新多个表,可以用tables=dept,employee这种方式。