gginitload初始化直接加载
程序员文章站
2022-06-06 20:23:19
...
实例:从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,目标表行数就多了一倍。
下一篇: php简单用户登陆程序代码