首先必须创建一个数据定义文件,本例中,数据定义文件在源端生成1. 创建一个参数文件 edit param rep1.defs defsfile ./dirdef/rep1.defs userid ggs, password ggs table scott.*;
注意分号不可少,否则数据定义文件生成的时候会出错2. 使用GoldenGate工具gendef 生成数据定义文件 这个工具是一个EXE文件,所以必须在命令行下执行 c:\ggs>defgen paramfile rep1.defs
*********************************************************************** Oracle GoldenGate Table Definition Generator for Oracle Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230 Windows x64 (optimized), Oracle 11g on Apr 23 2012 05:48:41
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
Starting at 2013-07-10 16:10:03***********************************************************************
Operating System Version:Microsoft Windows 7 , on x64Version 6.1 (Build 7601: Service Pack 1)
Process id: 4704
************************************************************************* Running with the following parameters *************************************************************************defsfile ./dirdef/rep1.defs
Source Context : SourceModule : [defgen.main] SourceID : [defgen/defgen.c] SourceFunction : [create_defgen_file] SourceLine : [795] ThreadBacktrace : [8] elements : [c:\ggs\gglog.dll(??1CContextItem@@UEAA@XZ+0x313f) [0x00000001801075AF]] : [c:\ggs\gglog.dll(?_MSG_ERR_STARTUP_FILE_EXISTS@@YAPEAVCMessage@@PEAVCSourceContext@@PEBD1W4MessageDisposition@CMessageFactory@@@Z+0xda) [0x000000018001F47A]] : [c:\ggs\defgen.exe(<_MSG_ERR_STARTUP_FILE_EXISTS@@YAPEAVCMessage@@PEAVCSourceContext@@PEBD1W4MessageDisposition@CMessageFactory@@@Z+0xda) [0x0000000140004418]] : [c:\ggs\defgen.exe(<_MSG_ERR_STARTUP_FILE_EXISTS@@YAPEAVCMessage@@PEAVCSourceContext@@PEBD1W4MessageDisposition@CMessageFactory@@@Z+0xda) [0x00000001400057B0]] : [c:\ggs\defgen.exe(<_MSG_ERR_STARTUP_FILE_EXISTS@@YAPEAVCMessage@@PEAVCSourceContext@@PEBD1W4MessageDisposition@CMessageFactory@@@Z+0xda) [0x00000001400064F6]] : [c:\ggs\defgen.exe(CommonLexerNewSSD+0x2be0) [0x000000014007F1B0]] : [C:\Windows\system32\kernel32.dll(BaseThreadInitThunk+0xd) [0x00000000773D652D]] : [C:\Windows\SYSTEM32\ntdll.dll(RtlUserThreadStart+0x21) [0x000000007750C521]]
2013-07-10 16:10:03 ERROR OGG-00037 DEFSFILE file ./dirdef/rep1.defs already exists.
2013-07-10 16:10:03 ERROR OGG-01668 PROCESS ABENDING.
c:\ggs>defgen paramfile rep1.defs
*********************************************************************** Oracle GoldenGate Table Definition Generator for Oracle Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230 Windows x64 (optimized), Oracle 11g on Apr 23 2012 05:48:41
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
Starting at 2013-07-10 16:11:51***********************************************************************
Operating System Version:Microsoft Windows 7 , on x64Version 6.1 (Build 7601: Service Pack 1)
Process id: 6384
************************************************************************* Running with the following parameters *************************************************************************defsfile ./dirdef/rep1.defsuserid ggs, password ***table scott.*;Expanding wildcard scott.*:
Retrieving definition for SCOTT.BONUS
2013-07-10 16:12:03 WARNING OGG-00869 No unique key is defined for table 'BONUS'. All viable columns will be used to represent the key, but may not guaranteeuniqueness. KEYCOLS may be used to define the key.Retrieving definition for SCOTT.DEMORetrieving definition for SCOTT.DEPTRetrieving definition for SCOTT.EMPRetrieving definition for SCOTT.SALGRADE
2013-07-10 16:12:03 WARNING OGG-00869 No unique key is defined for table 'SALGRADE'. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.Retrieving definition for SCOTT.TEST_DDL
2013-07-10 16:12:03 WARNING OGG-00869 No unique key is defined for table 'TEST_DDL'. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
Definitions generated for 6 tables in ./dirdef/rep1.defs
文件生成之后,将文件拷贝到目标端的ggs安装目录下的dirdef目录,文件名是rep1.defs
在目标端的replicat进程组参数文件中加入一行map scott.demo, target scott.demo , colmap(usedefaults, salary=wages);
其中wages是源端的列名
源端demo表定义:
CREATE TABLE "SCOTT"."DEMO" ("ID" NUMBER, "ENAME" VARCHAR2(10 BYTE), "WAGES"NUMBER, PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ENABLE, SUPPLEMENTAL LOG GROUP "GGS_74569" ("ID") ALWAYS )
目标端demo表定义:
CREATE TABLE "SCOTT"."DEMO" ("ID" NUMBER, "ENAME" VARCHAR2(10 BYTE), "SALARY"NUMBER, PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ENABLE, SUPPLEMENTAL LOG GROUP "GGS_74569" ("ID") ALWAYS )
启动extract, replicat进程,测试结果OK。
CREATE TABLE "SCOTT"."DEMO"
("ID" NUMBER,
"ENAME" VARCHAR2(10 BYTE),
"WAGES"NUMBER,
PRIMARY KEY ("ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ENABLE,
SUPPLEMENTAL LOG GROUP "GGS_74569" ("ID") ALWAYS
)
CREATE TABLE "SCOTT"."DEMO"
("ID" NUMBER,
"ENAME" VARCHAR2(10 BYTE),
"SALARY"NUMBER,
PRIMARY KEY ("ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ENABLE,
SUPPLEMENTAL LOG GROUP "GGS_74569" ("ID") ALWAYS
)