有时候业务必须24小时,没法停机,如果某些表数据不一致,可以采用下列流程重新同步个别表
1、在目标端停止replicat进程
stop repprod
2、在源库上查找出当前scn号
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
887914549
3、在源库导出需要重新同步的表
expdp lis directory=data_pump_dir dumpfile=lacommision.dmp logfile=lacommision.log tables=lacommision content=data_only flashback_scn=887914549
4、将导出文件传到目标系统
scp oracle@10.0.1.10:/oracle/admin/lis/dpdump/lacommision.dmp /oracle/admin/lis/dpdump
5、清空目标库中表的内容
truncate table lacommision;
6、将表导入目标数据库
impdp lis directory=data_pump_dir dumpfile=lacommision.dmp logfile=lacommision.log
7、将该表涉及到的相关约束给禁用
8、修改replicat进程参数文件,在需要重新同步的表后指定过滤条件
map LIS.LACOMMISION, target LIS.LACOMMISION, filter (@GETENV ("transaction", "csn") > 887914549);
9、启动目标端replicat进程
start repprod
10、等待追平了以后,就可以停掉replicat进程,去掉表后的过滤条件,然后重启进程。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26194851/viewspace-733902/
,如需转载,请注明出处,否则将追究法律责任。