天天看点

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可以同时出现。

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,目标表行数就多了一倍。