首页 > 代码库 > gg init load初始化直接加载

gg init load初始化直接加载

实例:从Oracle初始化数据到Sqlserver。
配置初始化数据抓取(direct load)
源端(oracle)
增加初始化加载batch task group
add extract eini01,sourceistable

参数解析:
#sourceistable表示从表direct抓取而不是redo日志获取数据。
info extract *,tasks    #查看状态是STOPPED
配置初始加载进程eini01的参数
edit params eini01
extract eini01
userid ggmgr,password oracle
rmthost 10.10.1.220,mgrport 7809,compress
rmttask replicat,group rini01
table ggmgr.t1;


参数解析:
rmttask replicat,group inir_erp  
让direct manager在目标端同时开启rini01进程,完成一次性的加载,也就是在目标端我们不用手动start rini01进程了。

注意事项:
因为是直接从原表抽取,而不是从日志,所以不用为表加trandata也可以。


要使用defgen工具将源端定义传送到目标端


目标端(sqlserver):
配置初始应用日志
目标端得手动建这个表,而不能在初始化时自动建上相应的表。

add replicat rini01,specialrun
info replicat *,tasks
--配置参数
edit params rini01
replicat rini01
targetdb mssql
sourcedefs D:\gg\dirdef\defgen.def
map ggmgr.t1,  target erpdb.dbo.t1;


assumetargetdefs 
什么时候能用这个?
要是相同的db类型,例如都是Oracle
相同的charactor set与locale,例如american_AMERICA.
包含相同列的数目。
列的名称要完全相同,包括大小写空格符号等。
一样的data types。
一样的列长度。
have the same column length semantics for character columns (bytes versus characters). 意思应该是例如一个字母占几个字节这些吧。
字段的顺序也得一致。
如果对于有一样结构的表,又有不一样结构的表。sourcedefs与assumetargetdefs可以同时出现。
sourcedefs D:\gg\dirdef\defgen.def
map ord.prod; target ord.prod;
assumetargetdefs
map rpt.stock, target rpt.stock

discardfile D:\gg\dirrpt\rini01.dsc,purges


#ASSUMETARGETDEFS:代表源表与目标表结构完全一样,估计int与number也是不同的数据类型。这个与sourcedefs只能选其中一个。
#specialrun指明这是一个one-time run,而不是continuous process。

发起init加载
源端(oracle)
start extract eini01    #源端发起就可以,会调用目标端的replicat进程来进行one-time加载。
info eini01
view report eini01

目标端(sqlserver)
view report rini01

specialrun参数定义一个初始加载进程(这是不使用检查点的一次性加载)。文件的下一行指示replicat进程在加载完成后终止。extfile指示提取文件,sourcedefs指定表定义。

防火墙要注意通,可能用telnet 192.168.1.71 7809 这种方式来检验。

此时,我原表目标表都是没有主键的,也可以同步。
另外,我在源端再次执行start extract eini01,目标表行数就多了一倍。