?
阅读导航
写在开始前
1 问题分析
? 1.1 业务需求
2 需求实现
? 2.1 源端Extract进程配置抽取表对象和数据过滤
? 2.2 在源端生成表定义文件
? ? 2.2.1 什么时候需要定义文件
? ? 2.2.2 生成表定义文件
? 2.3 目标端Replicat进程配置源端表定义信息和源端与目标端字段的对照映射
? 2.3 目标端
数据库实现省份和城市的数据分拆
3 业务测试
4 GoldenGate支持触发器
? 5 总结
写在开始前
从两周前我花了大量的业余时间
阅读GoldenGate官方文档,并根据文档实践和进一步学习了解GoldenGate,以下便是根据官方文档理解总结的GoldenGate学习内容:
Oracle GoldenGate 一、介绍和安装
Oracle GoldenGate 二、配置和使用
在[美] 莫提默·J.艾德勒,[美] 查尔斯·范多伦著的【How to Read a Book】一书中,作者强调如果你每天所学的知识你不能用你自己的语言去描述或记忆它,那说明你未真正学习和了解所学的知识,So 那以后我改变了我的学习方式,把生搬硬套的学习方式改变为用自己的语言、用自己的了解去描述和记忆知识,描述难免有错,请谅解,也请指导,谢谢!
?
1 问题分析
有如下的两张STB01、TTB01表,STB01表存放在源端中,TTB01表存放在目标端,表结构如下:
源端系统
?
字段名
说明
SID
用户ID
SNAME
用户名
SGENDER
性别,值为1表示男,2表示女
SBRIDATE
出生日期
ADETAIL
地址信息,存储格式:省份_城市,如:云南省_昆明市
表结构定义:
?
?
create table OGG_OWNER.STB01(
SID NUMBER(10) PRIMARY KEY,
SNAME VARCHAR2(15) NOT NULL,
SGENDER CHAR(1) CHECK(SGENDER='1' OR SGENDER='2'),
SBRIDATE DATE,
ADETAIL varchar2(70)
) TABLESPACE TBS01
/
?
目标端系统
?
字段名
说明
TID
用户ID
TNAME
用户名
TGENDER
性别,值为1表示男,2表示女
TBRIDATE
出生日期
TPROVINCE
省份
TCITY
城市
TRANSFERDATE
交换日期
表结构定义:
create table OGG_TRG.TTB01(
TID NUMBER(10) PRIMARY KEY,
TNAME VARCHAR2(15) NOT NULL,
TGENDER CHAR(1) CHECK(TGENDER='1' OR TGENDER='2'),
TBRIDATE DATE,
TPROVINCE VARCHAR2(70),
TCITY VARCHAR2(10),
TRANSFERDATE DATE
)TABLESPACE TBS01
/
?
1.1 业务需求
同步源端系统表OGG_OWNER.STB01的数据到目标系统表OGG_TRG.TTB01;
要求:
?
只同步性别为男的数据(SGENDER=1)
源端的地址信息要分别拆分存储到目标端省份字段(TPROVINCE)和城市字段(TCITY)中
2 需求实现
根据需求,分析出大致的处理步骤:
?
源端Extract进程配置抽取表对象
源端Data Pump进程配置数据过滤
在源端生成表定义文件
目标端Replicat进程配置源端表定义信息和源端与目标端字段的对照映射
2.1 源端Extract进程配置抽取表对象和数据过滤
在主抽取进程(Primary Extract)中配置抽取对象信息
GGSCI (sywu) 2> edit param esydb001
extract ESYDB001
SETENV(ORACLE_SID="sydb")
SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogg_owner,password AADAAAAAAAAAAAJANJBHVDBAGCCBOIUCTJHJVIOCVGBFSGNJFFAAGIOHBJNBWAPANGWILCPFGIXBOIXB &
aes128,ENCRYPTKEY securekey1
ENCRYPTTRAIL aes128,KEYNAME securekey1
EXTTRAIL /u01/app/product/ogg_src/dirdat/es
table OGG_OWNER.STB01;
?
在Data Pump(Secondly Extract)进程中配置抽取对象和数据过滤
?
GGSCI (sywu as ogg_owner@sydb) 6> edit param PSYDB001
extract psydb001
SETENV(ORACLE_SID="sydb")
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
OBEY /u01/app/product/ogg_src/dirdef/dbConnect.obey
ENCRYPTTRAIL aes128 KEYNAME securekey1
RMTTRAIL /u01/app/product/ogg_trg/dirdat/ps
table OGG_OWNER.STB01 @filter(SGENDER='1');
?
更多关于数据过滤请参考:GoldenGate Filter
?
2.2 在源端生成表定义文件
表定义文件记录了交换数据表在数据库中的结构信息,内容包括数据库类型、字符集、时区、数据对象以及数据对象结构的详细信息,对象结构包含的信息如下:
?
* ?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
* ? ?20 ? ?Native Data Type