Oracle GoldenGate 数据同步初始化最佳实战(Data Pump)
全链路初始化标准化流程:
1)验证同步链路连通性
使用info extract/pump/replicat,detail命令核实同步链路各进程trail文件及检查点是否一致,如不一致,需要使用如下语句接通,如有必要还可在初始化开始前进行DML测试
alter extract/pump/repilcat extseqno,extrba
2)检查gv$transaction视图,查看当前是否存在正在运行的长时间事务,如若存在需查明原因,要么等待完成,要么kill掉该事务。
3)在源端添加同步表的附加日志
如第2步中不存在无法kill掉的事务,则在源端执行(此步骤可选)
alter extract tranlog threads 2 begin now
4)执行上述步骤后,
在源端正常启动extract和pump进程
在目标端停止replicat进程
5)确保上述步骤完成后,开始进行导出操作,首先在确保源端数据库无正在运行事务的情况下取出当前 SCN值,并记录为 SCN_INIT:
select current_scnfrom v$database;
或
select dbms_flashback.get_system_change_number current_scn from dual;
6)在源端使用expdp工具指定 flashback_scn 选项将同步链路的初始化数据导出
expdp exp_user/exp_passwd schemas=hx_zsj directory=dp_dir dumpfile=hx_zsj.dmp logfile=hx_zsj_2013***.log exclude=grant,statistics,trigger flashback_scn=SCN_INIT
7)在目标端使用impdp工具导入,指定 table_exist_action=truncate 选项
impdp imp_user/imp_passwd schemas=hx_zsj directory=dp_dir dumpfile=hx_zsj.dmp logfile=hx_zsj_2013***.log table_exist_action=truncate
主数据同步注意事项:
为了保证初始化成功,在做初始化前应在同步目标端数据库禁用触发器、外键约束和具有DML操作的job,这些因素都可能导致初始化后两端数据的不一致
由于金三环境存在着交叉流向的级联同步,数据链路复杂,在做数据同步初始化时尽量选择在业务禁止区间(一般在晚上),封闭数据运维入口,尽量保证同步源端的数据禁止。
核心征管主数据同步部分,初始化时尽量保证各个链路的工作完全分离,如尽量在纳税人、申报等生产数据到主数据库同步的初始化完成后,再去做主数据库往外分发的同步初始化。
在做初始化时,尽量避免在往一个库导入的同时,在从该库进行导出,以保证有足够的undo资源可用。
相关阅读: