Oracle OGG根据时间字段过滤数据

Oracle OGG根据时间字段过滤数据

在某些场景下,需要用OGG同步生产数据到目标端,且生产端的数据表比较大的情况下,目标端可能不需要全部的表数据,这个时候就需要过滤同步部分数据了。
OGG提供了过滤相关的函数来实现这个功能。

以下是案例:

OGG版本:18.1
源端:Oracle 12.1
目标端:Oracle 19.3

抽取进程配置

--根据时间字段抽取同步部分数据

--添加抽取进程
add extract ett02,TRANLOG,BEGIN NOW
add exttrail ./dirdat/t3,extract ett02

edit params ett02

EXTRACT ett02
USERIDALIAS s_yksf
NUMFILES 300
EOFDELAYCSECS 10
DISCARDFILE ./dirrpt/ett02.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 05:30 ON MONDAY
EXTTRAIL ./dirdat/t3
TRANLOGOPTIONS LOGRETENTION DISABLED
TRANLOGOPTIONS DBLOGREADER
TRANLOGOPTIONS DBLOGREADERBUFSIZE 1048576
WARNLONGTRANS 4H, CHECKINTERVAL 300
GETTRUNCATES
GETUPDATEBEFORES
NOCOMPRESSDELETES
CACHEMGR, CACHESIZE 128MB
-- TABLES
TABLE sjzt.ttab1 FILTER(@COMPUTE(@DATEDIFF ('DD',create_time,'2025-06-01') ) <=0 );




--源端添加trandata
dblogin USERIDALIAS s_yksf
add trandata sjzt.ttab1
info trandata sjzt.ttab1

delete trandata sjzt.ttab1


应用进程配置

--根据时间字段只同步部分数据

--登录目标镜像库创建checkpoint table 
dblogin USERIDALIAS tn_yksf
add checkpointtable ogguser.checkpoint_2

--添加复制进程
add replicat rtt02,exttrail ./dirdat/t3, checkpointtable ogguser.checkpoint_2

--编辑参数 
edit params rtt02

REPLICAT rtt02
USERIDALIAS tn_yksf
NUMFILES 300
EOFDELAYCSECS 10
DISCARDFILE ./dirdsc/rtt02.dsc, APPEND, MEGABYTES 512
DISCARDROLLOVER AT 00:00
ASSUMETARGETDEFS
ALLOWNOOPUPDATES
GETTRUNCATES
GETUPDATEBEFORES
--TABLES
MAP sjzt.ttab1, TARGET sjzt.ttab1_date FILTER(@COMPUTE(@DATEDIFF ('DD',create_time,'2025-06-01') ) <=0 );


--删除应用进程(如果需要)
dblogin USERIDALIAS tn_yksf
delete REPLICAT rtt02

--启动抽取进程和应用进程

源端测试插入数据


SQL> INSERT INTO ttab1 VALUES(13,'casedata',to_date('2025-06-01 10:00:33','yyyy-mm-dd hh24:mi:ss'));

1 row created.

SQL> INSERT INTO ttab1 VALUES(14,'casedata',to_date('2024-06-03 10:33:12','yyyy-mm-dd hh24:mi:ss'));

1 row created.

SQL> INSERT INTO ttab1 VALUES(15,'casedata',to_date('2024-06-05 10:33:12','yyyy-mm-dd hh24:mi:ss'));

1 row created.

SQL> 
SQL> commit;

Commit complete.

SQL> 
SQL> INSERT INTO ttab1 VALUES(16,'casedata',to_date('2026-06-01 10:00:33','yyyy-mm-dd hh24:mi:ss'));

1 row created.

SQL> INSERT INTO ttab1 VALUES(17,'casedata',to_date('2026-06-03 10:33:12','yyyy-mm-dd hh24:mi:ss'));

1 row created.

SQL> INSERT INTO ttab1 VALUES(18,'casedata',to_date('2026-06-05 10:33:12','yyyy-mm-dd hh24:mi:ss'));

1 row created.

SQL> 
SQL> commit;

Commit complete.

SQL> 
SQL> 

目标端查询数据


SQL> /

       RID RNAME                BOTHDAY
---------- -------------------- -------------------
        11 casedata             2025-06-02 10:00:33
        13 casedata             2025-06-01 10:00:33
        16 casedata             2026-06-01 10:00:33
        17 casedata             2026-06-03 10:33:12
        18 casedata             2026-06-05 10:33:12
SQL> 

正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值