我有两个 Oracle 数据库(生产和实验室)。当我创建实验室数据库时,我从生产环境中导入了一个 .dmp 文件来复制数据。现在数据库已经运行了一段时间,数据不同步,我想重新导入。最简单的方法是什么?
我再次尝试使用 imp 但它现在显示错误,因为表格已经存在。我想我可以删除数据文件并重新导入。
编辑:这是我试过的:
$ imp user/password file=MyExportFile.dmp
following statement failed because the object already exists:
CREATE TABLE ...
...
Import terminated successfully with warnings.
下一次,而不是“删除一切”,你可以告诉
imp
忽略表创建错误并通过指定IGNORE=y
选项仍然加载数据:如手册中所述,在导入现有模式时,您应该考虑的其他事项很少。具体来说,您可能需要禁用参照完整性约束(如果存在),否则某些数据可能会被拒绝。
如果您想替换所有内容,那么最安全的方法是删除所有模式并使用 imp 再次导入它
drop user schema_name cascade
您还可以在常规导入实用程序中尝试 ignore=y 参数,当存在同名对象时将忽略错误,这在数据泵中称为 TABLE_EXISTS_ACTION。
在数据泵方法的情况下,使用 table_exists_action 参数跳过现有对象,如下所示: