ORACLE IMPDP导入报表数据已存在

背景

      搞了这么多年oracle,不论是开发和运维,自认为是都了解了,和dba差的只是熟练的问题,因为毕竟不是天天搞它。不过突然听说数据泵导入的功能,大吃一惊,好像有印象,以为是落后的,一查,竟然是先进的,10g后推出的。惭愧。用了一把,简单总结下了。和imp还是有所不同的,当用户不同时,不是用的fromuser和touser,用的是remap_schema。

导入语句

impdp "xixi/123456@192.168.1.234:1521/orcl" dumpfile=backup.dmp directory=dump_dir 
remap_schema=bobo:xixi remap_tablespace=TBS_BOBO:TBS_XIXI table_exists_action=SKIP TRANSFORM=segment_attributes:n

知识点

当使用IMPDP完成数据库导入时,如遇到表已存在时,Oracle提供给我们如下四种处理方式:

    a.忽略(SKIP,默认行为);
    b.在原有数据基础上继续增加(APPEND);
    c.先DROP表,然后创建表,最后完成数据插入(REPLACE);
    d.先TRUNCATE,再完成数据插入(TRUNCATE)。
 
    先用EXPDP生成一份dump文件
    sec@secDB /expdp$ expdp sec/sec directory=expdp_dir dumpfile=`date +"%Y%m%d%H%M%S"`_sec.dmp logfile=`date +"%Y%m%d%H%M%S"`_sec.log
 
    分别使用四中方式真实的感知一下具体效果
    用到的IMPDP语句统一汇总在这里,方便参考。
    SKIP:
    impdp system/sys directory=expdp_dir dumpfile=20100401102917_sec.dmp logfile=20100401102917_sec_impdp.log TABLE_EXISTS_ACTION=SKIP
 
    APPEND:
    impdp system/sys directory=expdp_dir dumpfile=20100401102917_sec.dmp logfile=20100401102917_sec_impdp.log TABLE_EXISTS_ACTION=APPEND
 
    REPLACE:
    impdp system/sys directory=expdp_dir dumpfile=20100401102917_sec.dmp logfile=20100401102917_sec_impdp.log TABLE_EXISTS_ACTION=REPLACE
 
    TRUNCATE:
    impdp system/sys directory=expdp_dir dumpfile=20100401102917_sec.dmp logfile=20100401102917_sec_impdp.log TABLE_EXISTS_ACTION=TRUNCATE
原文地址:https://www.cnblogs.com/sddychj/p/9540810.html