问题提出:
两个系统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表示只导入数据。
心得:对后台数据进行任何操作前,一定要进行分析风险,并对针该操作制定好备份/恢复的策略。