使用数据泵备份/恢复某些表

问题提出:

两个系统a和b之间做了同步接口,可能是之前的接口出现了问题,导致两边的数据不一致,需要清除系统b中的数据,使用同步接口从系统a将数据批量同步到系统b中。

解决办法:

分析:由于此同步涉及到系统B中的5个表(b.t1,b.t2,b.t3,b.t4,b.t5)中的数据更新,所以同步前,需要先备份这个5个表中的数据,然后删除表中的数据,通过同步接口从系统a向系统b同步数据,检查同步是否成功,如果不成功则需要使用之前的备份数据恢复系统b中的这5个表的数据。

操作步骤:

//使用oracle数据泵导出需要备份的5个表。

$expdp  system/password  directory=expdir  dumpfile=20100801.dmp  logfile=exp20100801.log  parallel=3   tables=b.t1,b.t2,b.t3,b.t4,b.t5

//删除这5个表的数据

SQL>delete from b.t1;

SQL>delete from b.t2;

SQL>delete from b.t3;

SQL>delete from b.t4;

SQL>delete from b.t5;

SQL>commit;

使用同步接口同步数据后发现有问题,需要对这5个表的数据进行恢复。

//删除这5个表中的数据

SQL>delete from b.t1;

SQL>delete from b.t2;

SQL>delete from b.t3;

SQL>delete from b.t4;

SQL>delete from b.t5;

SQL>commit;

//使用之前的备份进行恢复

$impdp  system/password  directory=expdir   dumpfile=20100801.dmp logfile=imp20100801.log   parallel=3    content=data_only  tables=b.t1,b.t2,b.t3,b.t4,b.t5  ;

说明:dumpfile必须是之前使用expdp导出的dumpfile文件的名字。content=data_only表示只导入数据。

心得:对后台数据进行任何操作前,一定要进行分析风险,并对针该操作制定好备份/恢复的策略。

请使用浏览器的分享功能分享到微信等