GoldenGate支持多种方式进行初始化同步,针对源和目标是相同数据库的情况,建议采用数据库的内置工具进行同步,以oracle为例,如果是全库同步建议采用rman或者transportalbe tablespace,这样可以保证效率最高,同步最安全可靠。如果是用户级别、表级别,可以采用oracle exp/imp或者expdp/impdp(datapump)功能,当然rman和datapump需要额外的存储空间,imp/exp可以通过管道进行同步,但效率相对比较低。这里如果是同版本的oracle到oracle,并且是全库同步,强烈建议采用rman来做。
初始化的准备工作:
在初始化前,请首先完成完成goldengate的安装和配置,请参见前面安装和配置的文章,尤其要注意的是一定是在源数据库上执行完add trandata以后才能初始化工作。
1.首先需要在源端启动一个数据抽取进程,具体的操作前面安装配置文档已经说明,这个进程负责将数据初始化期间源系统的变化数据记录下来。在启动goldengate时记录下当前的系统日期和数据库的SCN号。
2.配置数据传输进程,将变化的数据库数据从本地trail文件同步到目标端trail文件,该进程可以理解为一个断点续传的工具,它只是把变化数据从源搬到目标,如果您的系统是生产系统,数据同步时不允许出现任何一点数据重复,您可以在这里加一些过滤条件,例如我们可以以上一步记录的SCN号为过滤条件,只有SCN大于某个值的交易数据才传到目标端,在目标端用rman恢复数据库时,我们将它恢复到指定的SCN号(我们记录的SCN),这样可以保证goldengate精确初始化,使数据的变化完全可控,具体的操作是采用token,在源的extract进程中将每一个交易的SCN号记录到trail文件中,然后在传输进程中利用SCN号过滤,待传输进程定位到符合过滤条件的交易后开始传输,此时再将extract中的token去掉(毕竟写的东西多,会对效率有一定影响),然后再将传输进程的过滤条件去掉(传输进程一旦定位到符合过滤条件的记录,就会从该位置一直往下扫描,该位置以前的就全部忽略掉了,此时即使没有过滤条件,该位置以后的交易也是符合过滤条件的).
3.开始数据拷贝过程,采用rman/datapump将源系统的数据库copy到目标系统,这方面的资料多的是,大家自己到网上去找吧。
4.在目标端启动replicat进程,如果在数据传输时您采用的是SCN号控制,则采用正常的replicat参数启动即可,因为此时我们传输到目标端的trail文件和目标数据库的数据没有任何冲突和重复,如果我们没有记录SCN号,只是记录的开始同步的时间,那此时我们需要在replicat的参数中加入handlecollisions,具体的配置请参考goldengate管理员手册,带数据库copy期间的数据全部同步到目标端后(你可以采用info replicat_name查看当前replicat读到trail文件的什么位置了,现实中有文件的位置信息和交易的时间信息),停止replicat(stop replicat_name),修改其参数(edit params replicat_name),然后去handlecollisions参数,再重新启动即可。
5.在目标端ggsci提示符下,执行lag replicat_name,当显示的信息lag时间为零时,表示源和目标达到一致状态。
6.至此初始化完成,下面进入正常数据同步阶段。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16312004/viewspace-627796/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16312004/viewspace-627796/