通過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
以下是捕獲之後的示例資料: