我正在使用Oracle的imp/exp
实用程序将数据库传输到另一台服务器。
首先,我创建了一个空数据库,其中包含与源数据库相同的表空间。
当我使用full mode
时导入的结果很好,数据库工作正常,但由于现有的系统对象,我得到了大量的错误。
这是相当令人不安的,我无法检查是否有“真正的”错误消息。
一个选项是使用ignore=Y
,但根据docs,这意味着表数据可能会重复。这听起来不太好。或者,如果我只导入一次就没有重复?
我也可以使用user mode
导入,但根据this table,我认为重要的部分不会以这种方式导入,我认为也应该避免。
可能是什么解决方案?
我应该使用expdp/impdp
,他们是否解决了这个问题?
提前致谢。
答案 0 :(得分:2)
出于多种原因(可用性,性能等),您绝对应该使用expdp
/ impdp
。当然,它可以卸载/加载整个数据库。您可以使用TABLE_EXISTS_ACTION
来控制表中已经存在的内容(SKIP | APPEND | TRUNCATE | REPLACE
)已存在于目标数据库中。您还可以使用EXCLUDE
参数来避免导入未更改/不需要的架构对象。
答案 1 :(得分:0)
通常,您只对某些架构感兴趣,并且您不想导入系统架构。如果转储文件包含完整导出,则可以导入您感兴趣的模式,如下所示:
imp system/<password>@<database> file=yourdump.dmp fromuser=<user1>,<user2>...<user_n>