全部博文(389)
分类: Oracle
2011-10-30 03:23:34
ORACLE GOLDEN GATE数据加载
ORACLE GOLDENGATE(以下简称GG)的初始化数据加载主要有三种方式:1,由GG在源库上EXTRACT导出到一个文件中,然后导入目标库;2,使用GG的直接加载,由EXTRACT在源库中捕捉后,直接传给目标库的REPLICAT;3,使用数据库的自带工具.从性能上来说第三种方式是最好的,适用大批量的数据.现在我们使用第二种方来实现数据库加载.在异构DB平台上,这种方式是最好的.有时可能是唯一的选择了.现在我们使用第二种方法来实现.
1,准备好数据库和GG软件;
2,关于表结构问题,如果两边都是ORACLE,可以直接用EXP导出,并且加参数ROWS=N,是异构平台的话,就需要使用定义文件;
3,增加源库的MGR和EXTRACT,在GGSCI下.
GGSCI (gg2) 1> edit params mgr
增加如下内容
--mgr parameters
Port 7809
GGSCI (gg2) 2> edit params ie01
增加如下内容,(// 后面是注脚,无需输入)
extract ie01 //EXTRACT名
setenv (ORACLE_SID=gg1) //源库SID
userid ggsadmin,password ggsadmin //GGS的用户名密码
rmthost 192.168.1.52,mgrport 7809 //目标库的IP和端口
rmttask replicat,group ir01 //RMTTASK REPLICAT表示是初化加载,GROUP定义了目标库的REPLICAT名
table FRANK.*;
GGSCI (gg1) 2> add extract ie01,sourceistable
通过sourceistable,告诉EXTRACT该从源库的表中捕捉数据
4, 增加目标库的MGR和REPLICAT, 在GGSCI下:
GGSCI (gg2) 1> edit params mgr
增加如下内容
--mgr parameters
Port 7809
GGSCI (gg2) 3> edit params ir01
replicat ir01 //REPLICAT名
setenv (ORACLE_SID=gg2) //目标库SID
userid ggsadmin,password ggsadmin //GGS的用户名密码
assumetargetdefs //目标库和源库的表结构相同
map FRANK.*, target FRANK.*; //定义表的映射关系
GGSCI (gg2) 4>add replicat ir01,specialrun
5,分别启动源库和目标库的MGR,再启动源库上的IE01
源库
GGSCI (gg2) 5> start mgr
目标库
GGSCI (gg2) 3> start mgr
最后再启动源库上的EXTRACT.三者顺序不要搞错了,如目标库的MGR没有启动启来,则主库中报ie01.prm: TCP/IP error 111 (Connection refused)之类的错误
GGSCI (gg2) 6> start extract ie01
源库上的EXTRACT会自动通知目标库上的MGR去启动复制进程IR01.因此并不需要在目标库上手动去启动IR01
6,确认加载完毕.在源库上可以看GGSERR.LOG有
2011-10-30 00:27:40 INFO OGG-00992 Oracle GoldenGate Capture for Oracle, ie01.prm: EXTRACT IE01 starting.
2011-10-30 00:27:42 INFO OGG-00993 Oracle GoldenGate Capture for Oracle, ie01.prm: EXTRACT IE01 started.
2011-10-30 00:29:00 INFO OGG-00991 Oracle GoldenGate Capture for Oracle, ie01.prm: EXTRACT IE01 stopped normally.//表示GG的IE01在完成数据捕捉和发送后,正常结束
也可通过在目标上库上,通过以下VIEW来查看,每个表的行数.
GGSCI (gg2) 7> view report ir01
www_xylove2012-07-22 14:04:57
如果在加载数据的时候,由数据变化,会导致数据不一致;你上面这个只适合停机情况下加载数据,如果是联机就不合适了,还必须在你上面配置的基础上增加一些配置,增加Replicat 进程上的HANDLECOLLISIONS参数(该参数将忽略重复数据),同步完成之后再取消该参数,而且direct load加载数据不支持LOB、 LONG类型的数据加载。如果表里有大对象字段那么就必须使用exp/imp 或 loading data from file to replicat 或 loading data from file to database utility等方式。
谢谢!