配置defgen文件因為 Oracle 和 SQL Server 中的數(shù)據(jù)類型不同,所以您必須建立數(shù)據(jù)類型轉(zhuǎn)換,
defgen工具使用
。GoldenGate 提供了一個名為 DEFGEN 的專用工具,用于生成數(shù)據(jù)定義,當(dāng)源表和目標(biāo)表中的定義不同時,Oracle GoldenGate 進程將引用該專用工具。在運行 DEFGEN 之前,需要為其創(chuàng)建一個參數(shù)文件,指定該工具應(yīng)檢查哪些表以及在檢查表之后存放類型定義文件的位置?梢栽 GGSCI 內(nèi)使用 EDIT PARAMS 命令創(chuàng)建這樣一個參數(shù)文件。cd $GGS_HOME/dirprm && vi defgen.prmdefsfile ./dirdef/defgen.def purgeuserid ggmgr,password oracletable ggmgr.t1; #這里必須有分號
purge(默認(rèn))與append選一個,append就是往已經(jīng)存在的同名的定義文件追加內(nèi)容,purge是先清空。
執(zhí)行defgen命令cd $GGS_HOME && ./defgen paramfile ./dirprm/defgen.prm 執(zhí)行之前,如果已經(jīng)有同名的defgen文件,會報錯,所以得先刪除。 上面命令,首先我們編輯一個包含登陸源庫用戶名密碼,要解析哪些表結(jié)構(gòu),以及要在哪里生成這個解析后的定義文件的參數(shù)文件。然后我們利用這個參數(shù)文件,結(jié)合defgen命令,來生成實際的定義文件。生成的定義文件,是包含表、列并且用更一般的定義描述了原生數(shù)據(jù)類型。./defgen paramfile ./dirprm/defgen.prm [reportfile ./dirrpt/defgen.rpt]這個reportfile指定除了要打印到屏幕,還打印到哪里。
將生成的dirdef/epcis.def 文件 scp上傳到目標(biāo)庫的GoldenGate安裝目錄下的dirdef文件夾下。使用二進制傳輸,可以避免不同系統(tǒng)之間對ascii編碼的解析差異。到時replicat進程會使用它,然后將一般的類型,重新映射為目標(biāo)庫表的數(shù)據(jù)類型。
附錄:執(zhí)行defgen命令后打印的日志:*********************************************************************** Oracle GoldenGate Table Definition Generator for Oracle Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230 Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 05:08:19 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. Starting at 2014-04-22 15:31:30***********************************************************************Operating System Version:LinuxVersion #1 SMP Wed Jul 27 21:02:33 EDT 2011, Release 2.6.32-200.13.1.el5uekNode: erpp1.dji.comMachine: x86_64 soft limit hard limitAddress Space Size : unlimited unlimitedHeap Size : unlimited unlimitedFile Size : unlimited unlimitedCPU Time : unlimited unlimitedProcess id: 22698************************************************************************* Running with the following parameters *************************************************************************defsfile ./dirdef/defgen.defuserid ggmgr,password ******table ggmgr.t1;Retrieving definition for GGMGR.T1Definitions generated for 1 table in ./dirdef/defgen.def
附錄:defgen.def內(nèi)容*+- Defgen version 2.0, Encoding UTF-8** Definitions created/modified 2014-04-22 15:31** Field descriptions for each column entry:** 1 Name* 2 Data Type* 3 External Length* 4 Fetch Offset* 5 Scale* 6 Level* 7 Null* 8 Bump if Odd* 9 Internal Length* 10 Binary Length* 11 Table Length* 12 Most Significant DT* 13 Least Significant DT* 14 High Precision* 15 Low Precision* 16 Elementary Item* 17 Occurs* 18 Key Column* 19 Sub Data Type*Database type: ORACLECharacter set ID: UTF-8National character set ID: UTF-16Locale: neutralCase sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14*Definition for table GGMGR.T1Record length: 56Syskey: 0Columns: 1ID 64 50 0 0 0 1 0 50 50 50 0 0 0 0 1 0 1 2End of definition