goldengate 进程的合并(进程拆分系列一)

来源:互联网 发布:淘宝网图片不显示 编辑:程序博客网 时间:2024/05/03 20:29
1、创建测试表
create table t1 as select * From emp where 0=1;
create table t2 as select * From dept where 0=1;
alter table t1 add primary key(empno);
alter table t2 add primary key(deptno);

配置好goldengate 进程,exta 进程同步 t1 表,extb进程同步t2 表;

GGSCI (a-hb-8-54) 270> info all
Program     Status      Group       Lag           Time Since Chkpt
MANAGER     RUNNING
EXTRACT     RUNNING     DPA         00:00:00      00:00:03
EXTRACT     RUNNING     DPB         00:00:00      00:00:00
EXTRACT     RUNNING     EXTA        00:00:00      00:00:05
EXTRACT     RUNNING     EXTB        00:00:00      00:00:03

目标端:
GGSCI (dba) 4> info all
Program     Status      Group       Lag           Time Since Chkpt
MANAGER     RUNNING                                           
REPLICAT    RUNNING     REPA        00:00:00      00:00:09    
REPLICAT    RUNNING     REPB        00:00:00      00:00:06    


现在测试合并这两个进程的时候有数据的变动

创建合并进程的参数文件
GGSCI (a-hb-8-54) 271> view params extc
extract extc
userid goldengate,password goldengate
exttrail F:\ggs_window\dirdat\cc
discardfile  F:\ggs_window\dirrpt\extc.dsc,append,megabytes 10M
rmthost 10.10.8.222,mgrport 7809
table scott.t2;
table scott.t1;

GGSCI (a-hb-8-54) 272> view params dpc
extract dpc
passthru
numfiles 500
rmthost 10.10.8.222,mgrport 7839 ,compress
dynamicresolution
rmttrail /ggs/dirdat/cc
table scott.*;

GGSCI (dba) 5> view params repc
replicat repc
assumetargetdefs
userid goldengate,password goldengate
reperror default,discard 
discardfile /ggs/log/repc.dsc, purge, megabytes 1
map scott.t1, target scott.t1;
map scott.t2, target scott.t2;

因为进程抓数据也是根据检查点的,所以我们在创建合并进程后,他就开始抓取相关表的日志了


创建合并进程的后,原来的抽取进程是继续同步的,源端插入数据并提交,观察目标端的进程,数据应该是同步的;

停止了原来的抽取进程exta,dpa,repa,extb,dpb,repb,并启动extc ,dpc,repc 进程,观察数据的变化,并查看是否有报错的日志

停止原来进程的时候,主要长事物的传输,如果有长事物存在,等待事物完成后再停止原来的进程


1、创建合并进程
add extract extc,tranlog,threads 1,begin now
add  exttrail F:\ggs_window\dirdat\cc,extract extc,megabytes 15


add extract dpc,exttrailsource F:\ggs_window\dirdat\cc
add rmttrail /ggs/dirdat/cc ,extract dpc
add replicat repc,exttrail /ggs/dirdat/cc nodbcheckpoint

2、插入数据
 
 insert into  t1  select * from emp where deptno=10;
 insert into t2 select * from dept where deptno=10;
 commit;
 
 查看目标端数据,已经同步
 SQL> select * From t1;


     EMPNO ENAME                          JOB                                MGR HIREDATE              SAL       COMM     DEPTNO
---------- ------------------------------ --------------------------- ---------- -------------- ---------- ---------- ----------
      7782 CLARK                          MANAGER                           7839 09-6月 -81           2450                    10
      7839 KING                           PRESIDENT                              17-11月-81           5000                    10
      7934 MILLER                         CLERK                             7782 23-1月 -82           1300                    10

SQL> select * From t2;
    DEPTNO DNAME                                      LOC
---------- ------------------------------------------ ---------------------------------------
        10 ACCOUNTING                                 NEW YORK

停止进程exta,dpa,repa,extb,dpb,repb,并启动extc ,dpc,repc 进程
stop exta
stop extb
stop dpa
stop dpb

stop repa
stop repb

start extc
start dpc
start repc


查看日志报错

[oracle@dba log]$ cat repc.dsc 
Oracle GoldenGate Delivery for Oracle process started, group REPC discard file opened: 2015-04-02 22:05:12
Current time: 2015-04-02 22:05:12
OCI Error ORA-00001: unique constraint (SCOTT.SYS_C007462) violated (status = 1), SQL <INSERT INTO "SCOTT"."T1" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") VALUES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7)>
Operation failed at seqno 0 rba 1011
Discarding record on action DISCARD on error 1
Problem replicating SCOTT.T1 to SCOTT.T1
Error (1) occurred with insert record (target format)...
*
EMPNO = 7782
ENAME = CLARK
JOB = MANAGER
MGR = 7839
HIREDATE = 1981-06-09 00:00:00
SAL = 2450.00
COMM = NULL
DEPTNO = 10
*
Current time: 2015-04-02 22:05:12


OCI Error ORA-00001: unique constraint (SCOTT.SYS_C007462) violated (status = 1), SQL <INSERT INTO "SCOTT"."T1" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") VALUES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7)>
Operation failed at seqno 0 rba 1251
Discarding record on action DISCARD on error 1
Problem replicating SCOTT.T1 to SCOTT.T1
Error (1) occurred with insert record (target format)...
*
EMPNO = 7839
ENAME = KING
JOB = PRESIDENT
MGR = NULL
HIREDATE = 1981-11-17 00:00:00
SAL = 5000.00
COMM = NULL
DEPTNO = 10
*
Current time: 2015-04-02 22:05:12


OCI Error ORA-00001: unique constraint (SCOTT.SYS_C007462) violated (status = 1), SQL <INSERT INTO "SCOTT"."T1" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") VALUES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7)>
Operation failed at seqno 0 rba 1462
Discarding record on action DISCARD on error 1
Problem replicating SCOTT.T1 to SCOTT.T1
Error (1) occurred with insert record (target format)...
*
EMPNO = 7934
ENAME = MILLER
JOB = CLERK
MGR = 7782
HIREDATE = 1982-01-23 00:00:00
SAL = 1300.00
COMM = NULL
DEPTNO = 10
*
Current time: 2015-04-02 22:05:12

OCI Error ORA-00001: unique constraint (SCOTT.SYS_C007463) violated (status = 1), SQL <INSERT INTO "SCOTT"."T2" ("DEPTNO","DNAME","LOC") VALUES (:a0,:a1,:a2)>
Operation failed at seqno 0 rba 1671
Discarding record on action DISCARD on error 1
Problem replicating SCOTT.T2 to SCOTT.T2
Error (1) occurred with insert record (target format)...
*
DEPTNO = 10
DNAME = ACCOUNTING
LOC = NEW YORK
*

说明extc 进程也抓取了插入数据的这一变化,再次执行抓取数据的这一动作,结果主键冲突,没有插入数据。


恢复到最开始的状态:
 创建合并进程的后,原来的抽取进程是继续同步的,源端update数据并提交,观察目标端的进程,数据应该是同步的;
停止了原来的抽取进程exta,dpa,repa,extb,dpb,repb,并启动extc ,dpc,repc 进程,观察数据的变化,并查看是否有报错的日志
如果表中有数据:
 SQL> select * From t1;
     EMPNO ENAME                          JOB                                MGR HIREDATE              SAL       COMM     DEPTNO
---------- ------------------------------ --------------------------- ---------- -------------- ---------- ---------- ----------
      7782 CLARK                          MANAGER                           7839 09-6月 -81           2450                    10
      7839 KING                           PRESIDENT                              17-11月-81           5000                    10
      7934 MILLER                         CLERK                             7782 23-1月 -82           1300                    10


SQL> select * From t2;
    DEPTNO DNAME                                      LOC
---------- ------------------------------------------ ---------------------------------------
        10 ACCOUNTING                                 NEW YORK
        
 1、创建合并进程
add extract extc,tranlog,threads 1,begin now
add  exttrail F:\ggs_window\dirdat\cc,extract extc,megabytes 15


add extract dpc,exttrailsource F:\ggs_window\dirdat\cc
add rmttrail /ggs/dirdat/cc ,extract dpc
add replicat repc,exttrail /ggs/dirdat/cc nodbcheckpoint


2、update数据
 
 update  t1  set sal=sal+1 where deptno=10;
 update  t2  set loc='NEW YORK1' where deptno=10;
 commit;       
        
SQL> select * from t1;
     EMPNO ENAME                          JOB                                MGR HIREDATE              SAL       COMM     DEPTNO
---------- ------------------------------ --------------------------- ---------- -------------- ---------- ---------- ----------
      7782 CLARK                          MANAGER                           7839 09-6月 -81           2451                    10
      7839 KING                           PRESIDENT                              17-11月-81           5001                    10
      7934 MILLER                         CLERK                             7782 23-1月 -82           1301                    10

SQL> select * from t2;
    DEPTNO DNAME                                      LOC
---------- ------------------------------------------ ---------------------------------------
        10 ACCOUNTING                                 NEW YORK1

停止进程exta,dpa,repa,extb,dpb,repb,并启动extc ,dpc,repc 进程
stop exta
stop extb
stop dpa
stop dpb

stop repa
stop repb

start extc
start dpc
start repc

SQL> select * from t1;
     EMPNO ENAME                          JOB                                MGR HIREDATE              SAL       COMM     DEPTNO
---------- ------------------------------ --------------------------- ---------- -------------- ---------- ---------- ----------
      7782 CLARK                          MANAGER                           7839 09-6月 -81           2451                    10
      7839 KING                           PRESIDENT                              17-11月-81           5001                    10
      7934 MILLER                         CLERK                             7782 23-1月 -82           1301                    10


SQL> select * from t2;
    DEPTNO DNAME                                      LOC
---------- ------------------------------------------ ---------------------------------------
        10 ACCOUNTING                                 NEW YORK1


查看日志报错:
没有报错

GGSCI (dba) 61> stats repc, total
Sending STATS request to REPLICAT REPC ...
Start of Statistics at 2015-04-02 22:20:51.
Replicating from SCOTT.T1 to SCOTT.T1:
*** Total statistics since 2015-04-02 22:17:18 ***
        Total inserts                                0.00
        Total updates                                3.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                             3.00

Replicating from SCOTT.T2 to SCOTT.T2:
*** Total statistics since 2015-04-02 22:17:18 ***
        Total inserts                                0.00
        Total updates                                1.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                             1.00
End of Statistics.

所以从此看出没有太大影响



恢复到最开始的同步状态,创建合并进程的后,停止了原来的抽取进程exta,dpa,repa,extb,dpb,repb,源端插入数据并提交,
并启动extc ,dpc,repc 进程,观察数据的变化,观察目标端的进程,数据应该是同步,并查看是否有报错的日志

SQL> select *From t1;
     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
      7839 KING       PRESIDENT            17-11月-81           5000                    10
      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10

SQL> select *From t2;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK


  1、创建合并进程
add extract extc,tranlog,threads 1,begin now
add  exttrail F:\ggs_window\dirdat\cc,extract extc,megabytes 15


add extract dpc,exttrailsource F:\ggs_window\dirdat\cc
add rmttrail /ggs/dirdat/cc ,extract dpc
add replicat repc,exttrail /ggs/dirdat/cc nodbcheckpoint

停止进程exta,dpa,repa,extb,dpb,repb,
stop exta
stop extb
stop dpa
stop dpb

stop repa
stop repb

3、update,插入数据

update  t1  set sal=sal+1 where deptno=10;
 update  t2  set loc='NEW YORK1' where deptno=10;
 commit;       
        
 insert into  t1  select * from emp where empno=7369;
 insert into t2 select * from dept where deptno=20;
 commit;
 
启动extc ,dpc,repc 进程

start extc
start dpc
start repc
 
SQL> select * From t1;
     EMPNO ENAME                          JOB                                MGR HIREDATE              SAL       COMM     DEPTNO
---------- ------------------------------ --------------------------- ---------- -------------- ---------- ---------- ----------
      7782 CLARK                          MANAGER                           7839 09-6月 -81           2451                    10
      7839 KING                           PRESIDENT                              17-11月-81           5001                    10
      7934 MILLER                         CLERK                             7782 23-1月 -82           1301                    10
      7369 SMITH                          CLERK                             7902 17-12月-80            800                    20

SQL> select * From t2;
    DEPTNO DNAME                                      LOC
---------- ------------------------------------------ ---------------------------------------
        20 RESEARCH                                   DALLAS
        10 ACCOUNTING                                 NEW YORK1


到此进程合并完成,查看进程的报错日志,没有任何报错,说明此方式相对于上面的方式来说还是比较正确的


进程合并完成后,就可以删除原来的进程 exta,dpa,repa,extb,dpb,repb;

注意:实现上面操作的前提是,必须开启附加日志
add trandata scott.t1;
add trandata scott.t2;
0 0
原创粉丝点击