1. OGG REPLICAT进程的拆分
如果Replicat进程的拆分粒度又不够细,最好的调优方法择是对Replicat进程进行拆分。
如单个Replicat 无法满足一个队列投递数据要求,可以根据表进行拆分,每个进程负责不同表的集合,尽量保证同一业务涉及的表放在一个Replicat 中,可以保证一致性(需临时禁止表间的外键链接保证Replicat 可进行拆分)
1.1. 停止要拆分的进程
GGSCI (cndba) 11> stop rep1
Sending STOP request to REPLICAT REP1 ...
Request processed.
1.2. 查看要拆分进程的SEQNO和RBA号
GGSCI (cndba) 12> info rep1
REPLICAT REP1 Last Started 2018-06-11 21:18 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:00:58 ago)
Log Read Checkpoint File ./dirdat/et000024
2018-06-11 21:58:22.004321 RBA 1324
说明当前的进程读到第24个队列,而且RBA号1314的位置。
1.3. 为要新建的进程编辑参数文件,这里叫rep2
edit params rep2
REPLICAT rep2
--setenv (ORACLE_SID=cndba)
--SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/db_1")
USERID ogg,PASSWORD ogg
ASSUMETARGETDEFS
--HANDLECOLLISIONS
REPERROR (DEFAULT, DISCARD)
DDLERROR DEFAULT DISCARD
DDLOPTIONS REPORT
DISCARDFILE ./dirrpt/repr2.dsc,append,megabytes 100
--HANDLECOLLISIONS
MAP test.test2, TARGET test.test2;
1.4. 添加rep2 进程组,并为其添加tail 文件
GGSCI (cndba) 17> add replicat rep2, exttrail ./dirdat/et, checkpointtable ogg.checkpoint
REPLICAT added.
1.5. 修改rep2的指针和rep1相同
GGSCI (cndba) 18> alter rep2,extseqno 24 extrba 1324
REPLICAT altered.
1.6. 再次确认rep1 和rep2 的指针修改到长一致状态
GGSCI (cndba) 22> info rep1
REPLICAT REP1 Last Started 2018-06-11 21:18 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:14:17 ago)
Log Read Checkpoint File ./dirdat/et000024
2018-06-11 21:58:22.004321 RBA 1324
GGSCI (cndba) 30> info rep2
REPLICAT REP2 Initialized 2018-06-12 00:22 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:00:04 ago)
Log Read Checkpoint File ./dirdat/et000024
First Record RBA 1324
1.7. 一定要记住要把rep1 中拆分到rep2 中的表排除掉,否则会有重复数据
edit params rep1
tableexclude test.test2
1.8. 启动rep1和rep2
GGSCI (cndba) 32> start rep1
Sending START request to MANAGER ...
REPLICAT REP1 starting
GGSCI (cndba) 33> start rep2
Sending START request to MANAGER ...
REPLICAT REP2 starting
GGSCI (cndba) 34> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:08
REPLICAT RUNNING REP2 00:00:00 00:00:04
1.9. 测试
--源端插入数据
SQL> insert into test2 values(1,'zhangsan');
1 row created.
SQL> commit;
Commit complete.
SQL> insert into test values(50,'test');
1 row created.
SQL> commit;
Commit complete.
SQL> select count(*) from test;
COUNT(*)
----------
40
--目标端查看数据
SQL> select * from test2;
ID NAME
---------- --------
1 zhangsan
SQL> select count(*) from test;
COUNT(*)
----------
40
到这个ogg 就把比较慢的进程拆分到不同的两个进程里面,入库就会明显地加快。
对ogg 调优其实就是对一些参数做相应的调整。入库比较慢就要对Replicat进程进行拆分,而且很多时候对ogg 的瓶颈就是Replicat进程,大多数时候调优发送在容灾端。
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 上一篇:OGG 修改 trail 文件大小
- 下一篇:OGG 合并REPLICAT进程