我用下面语句导出数据,不导出表结构,执行语句如下:
expdp ptemp/******@EMPDB DIRECTORY=bakupPtempKF DUMPFILE=ptemp8122.dmp CONTENT=DATA_ONLY然后我用PL/SQL把该数据库中某个表数据更新一个字段,比如:表test中一条记录的date日期改了值。然后我用下面的语句还原:impdp ptemp/******@EMPDB DIRECTORY=bakupPtempKF DUMPFILE=ptemp8122.dmp TABLE_EXISTS_ACTION=APPEND还原的时候发生下面的错误,数据库数据也没有还原回来,该怎么解决这个问题?顺便问一下:TABBLE_EXISTS_ACTION={SKIP | APPEND |TRUNCATE | FRPLACE }
当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表并追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项后边三项我应该怎么去理解,append追加数据是指,备份的文件里有的数据,但是现在的表里没有数据,那么就把备份的数据追加回来吗?TRUNCATE就不知道该怎么理解了。REPLACE在处理主从表的时候,会不会因为唯一约束而导致失败?我只是要做一个:只备份数据,恢复的时候也只恢复数据  达到这个效果应该不难吧?求大神支招,小弟感激不尽!!!数据泵Oracle备份impdpexpdp

解决方案 »

  1.   

    append是往现有表里添加数据,有重复数据会报错
    TRUNCATE 是先级联删除该表里的数据,然后把新的数据插入进去。
    REPLACE 是产删除表机器数据,然后再建表和添加数据。若导出CONTENT为DATA_ONLY时REPLACE参数无效
      

  2.   

    若是为了测试而进行恢复,建议你直接整个数据库导出或者按SCHEMA导出建表语句和数据。并重新建立一个新的数据库进行导入