天天看點

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