欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

gginitload初始化直接加载

程序员文章站 2022-06-04 21:57:44
...

实例:从Oracle初始化数据到Sqlserver。配置初始化数据抓取(direct load)源端(oracle)增加初始化加载batch task groupadd extract eini01,sourceistable 参数解析:#sourceistable表示从表direct抓取而不是redo日志获取数据。info extract *,tasks #查看状态

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