* ? ?21 ? ?Character Set
* ? ?22 ? ?Character Length
* ? ?23 ? ?LOB Type
* ? ?24 ? ?Partial Type
这些信息将帮助GoldenGate实现数据类型转换、匹配以及数据处理,比如源端的数据类型长度可能比目标端长,交换时GoldenGate将根据定义文件截取或转换数据。
?
2.2.1 什么时候需要定义文件
当源端和目标端的表结构不相同时
2.2.2 生成表定义文件
生成表定义文件需要先创建定义配置文件,配置文件中指定定义文件存储路径和文件名(DEFSFILE)、
数据库连接信息、需要生成表定义信息的对象(table);最后再根据定义配置文件通过GoldenGate自带的defgen命令生成表定义文件。
创建定义配置文件
?
[oracle@sywu dirdef]$ vim /u01/app/product/ogg_src/dirdef/psydb001.prm
?
?DEFSFILE /u01/app/product/ogg_src/dirdef/psydb001.def, purge
?OBEY /u01/app/product/ogg_src/dirdef/dbConnect.obey
?table OGG_OWNER.STB01;
根据定义配置文件生成定义文件
?
[oracle@sywu ogg_src]$ ./defgen PARAMFILE /u01/app/product/ogg_src/dirdef/psydb001.prm
***********************************************************************
Oracle GoldenGate Table Definition Generator for Oracle
Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140727.2135.1
Linux, x64, 64bit (optimized), Oracle 11g on Aug 7 2014 05:45:39
Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
Starting at 2015-09-01 21:49:48
***********************************************************************
Operating System Version:
Linux
Version #1 SMP Thu Jul 31 17:20:51 UTC 2014, Release 2.6.32-431.23.3.el6.x86_64
Node: sywu
Machine: x86_64
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited
Process id: 7099
***********************************************************************
** Running with the following parameters **
***********************************************************************
DEFSFILE /u01/app/product/ogg_src/dirdef/psydb001.def, purge
userid ogg_owner,password ******************************************************************************** aes128 encryptkey securekey1
table OGG_OWNER.STB01;
Retrieving definition for OGG_OWNER.STB01.
Definitions generated for 1 table in /u01/app/product/ogg_src/dirdef/psydb001.def.
?
2.3 目标端Replicat进程配置源端表定义信息和源端与目标端字段的对照映射
将源端生成的表定义文件发送到目标端,然后在Replicat进程中配置表定义信息;
?
GGSCI (sywu) 9> edit param RSYDB001
REPLICAT rsydb001
SETENV(ORACLE_SID="sydb")
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ogg_trg,password AADAAAAAAAAAAAHABDQFVJMADCAFECACYEPIQEJCFGDGMDHBRJXCUBOBQJEGLBPEBDMCOAACDILGAJKA &
aes128,ENCRYPTKEY securekey1
DISCARDFILE /u01/app/product/ogg_trg/discrd/reptr.desc,append,megabytes 512
DECRYPTTRAIL AES128, KEYNAME securekey1
SOURCEDEFS /u01/app/product/ogg_trg/dirdef/psydb001.def
ALLOWNOOPUPDATES
ASSUMETARGETDEFS
MAP OGG_OWNER.TOGG,target OGG_TRG.TOGG;
MAP OGG_OWNER.STB01,target OGG_TRG.TTB01,
COLMAP(TID=SID,
TNAME=SNAME,
TGENDER=SGENDER,
TBRIDATE=SBRIDATE,
TPROVINCE=ADETAIL,
TRANSFERDATE=@DATENOW()
);
?
SOURCEDEFS 定义源端的表结构定义文件信息;
COLMAP 定义源端表和目标表的数据项对照映射;
常用的GoldenGate函数:
?
函数名
说明
@DATE
返回转换日期格式
@GETENV
返回GoldenGate环境变量值
@STRFIND
返回指定字符在字符串中的位置
更多的函数说明请参考:GoldenGate官方列转换函数文档
?
2.3 目标端数据库实现省份和城市的数据分拆
因为有些拆分工作涉及复杂的操作,所以拆分字符的工作可以放在数据库的触发器中完成。
?