通过goldengate,可以实现目标表和源表不同结构之间的实时复制,包括记录源系统所有表的变更操作,供ETL或其它审计系统使用。
记录信息包括表名、操作时间、操作SCN,事务标记,操作类型到一个流水表。用于后续ETL处理过程中的按序处理。
创建日志记录表
create table odi.odi_trans ( id int primary key, tb_name varchar(100), commit_tm timestamp, op_type varchar(50), tran_ind varchar(100), tran_csn varchar(100), insert_tm timestamp, flag smallint default 0, proc_tm timestamp ); |
创建序列
CREATE SEQUENCE odi.seq_odi_tran
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
创建OGG的投递进程,此进程与其它投递进程无关;即正常表的复制可以使用另外的进程处理。
投递进程参数配置
REPLICAT reall userid goldengate, password goldengate ASSUMETARGETDEFS DISCARDFILE ./dirrpt/REPall.DSC, append eofdelay 5
insertAllRecords map dts.*, target odi.odi_trans, sqlexec(id odiseq, query "select odi.seq_odi_tran.nextval val from dual"), colmap(id=odiseq.val, tb_name=@Getenv('ggheader','tablename'), commit_tm=@getenv('GGHEADER','committimestamp'), op_type=@getenv('GGHEADER','optype'), insert_tm=@datenow(), tran_ind=@getenv('GGHEADER','TRANSACTIONINDICATOR'), tran_csn=@getenv('TRANSACTION','CSN')), keycols(tb_name,tran_csn) |
GGSCI>add rep reall, exttrail ./dirdat/ea
以下是捕获之后的示例数据: