最近有客户需求,a库在内网,b库在外网,希望同步a库中几个基础业务表的每个表的几个字段同步到b库中,采用a–>c–>b的方式来实现同步(c同时接通内外网)
源端数据库准备
启动归档模式,开启强制日志和辅助日志,创建测试用户/表,ogg用户
SQL> create user xifenfei identified by xifenfei;User created.SQL> grant dba to xifenfei;Grant succeeded.SQL> conn xifenfei/xifenfeiConnected.SQL> create table t_xifenfei as select * from dba_objects;Table created.SQL> alter table t_xifenfei add constraint pk_t_xifenfei primary key(object_id); Table altered.SQL> archive log list;Database log mode No Archive ModeAutomatic archival DisabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 9Current log sequence 11SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startup mount;ORACLE instance started.Total System Global Area 901775360 bytesFixed Size 2024944 bytesVariable Size 239077904 bytesDatabase Buffers 658505728 bytesRedo Buffers 2166784 bytesDatabase mounted.SQL> alter database archivelog;Database altered.SQL> alter database open;Database altered.SQL> alter database force logging;Database altered.SQL> alter database add supplemental log data;Database altered.SQL> alter system switch logfile;System altered.SQL> create user ogg identified by oracle;User created.SQL> grant dba to ogg;Grant succeeded. |
配置mgr进程
[oracle@xffdbrh5 ogg]$ export PATH=/u01/ogg:$PATH[oracle@xffdbrh5 ogg]$ export LD_LIBRARY_PATH=/u01/ogg:$ORACLE_HOME/lib[oracle@xffdbrh5 ogg]$ ./ggsciOracle GoldenGate Command Interpreter for OracleVersion 11.2.1.0.5_02 16363018 OGGCORE_11.2.1.0.6_PLATFORMS_130301.1500_FBOLinux, x64, 64bit (optimized), Oracle 10g on Mar 1 2013 19:04:05Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved.GGSCI (xffdbrh5) 1> create subdirsCreating subdirectories under current directory /u01/oggParameter files /u01/ogg/dirprm: already existsReport files /u01/ogg/dirrpt: createdCheckpoint files /u01/ogg/dirchk: createdProcess status files /u01/ogg/dirpcs: createdSQL script files /u01/ogg/dirsql: createdDatabase definitions files /u01/ogg/dirdef: createdExtract data files /u01/ogg/dirdat: createdTemporary files /u01/ogg/dirtmp: createdStdout files /u01/ogg/dirout: createdGGSCI (xffdbrh5) 2> edit param mgrport 7839DYNAMICPORTLIST 7840-7850AUTOSTART EXTRACT *AUTORESTART EXTRACT *PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7LAGREPORTHOURS 1LAGINFOMINUTES 30LAGCRITICALMINUTES 45GGSCI (xffdbrh5) 3> dblogin userid ogg, password oracleSuccessfully logged into database.GGSCI (xffdbrh5) 4> add checkpointtable ogg.ggs_checkpointSuccessfully created checkpoint table ogg.ggs_checkpoint.GGSCI (xffdbrh5) 5> EDIT PARAMS ./GLOBALSogg.ggs_checkpointGGSCI (xffdbrh5) 6> start mgrManager started.GGSCI (xffdbrh5) 7> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNING |
配置extract进程
GGSCI (xffdbrh5) 3> dblogin userid ogg, password oracleSuccessfully logged into database.GGSCI (xffdbrh5) 4> add trandata xifenfei.t_xifenfeiLogging of supplemental redo data enabled for table XIFENFEI.T_XIFENFEI.GGSCI (xffdbrh5) 5> add extract ext_1, tranlog, begin now, threads 1EXTRACT added.GGSCI (xffdbrh5) 6> add EXTTRAIL ./dirdat/r1, extract ext_1,megabytes 100EXTTRAIL added.GGSCI (xffdbrh5) 7> edit param ext_1EXTRACT ext_1userid ogg,password oracleREPORTCOUNT EVERY 1 MINUTES, RATEnumfiles 5000DISCARDFILE ./dirrpt/ext_1.dsc,APPEND,MEGABYTES 1024DISCARDROLLOVER AT 3:00exttrail ./dirdat/r1,megabytes 100dynamicresolutionTRANLOGOPTIONS DISABLESUPPLOGCHECK --bug 16857778TABLE xifenfei.t_xifenfei, COLS (OWNER, OBJECT_NAME, SUBOBJECT_NAME, OBJECT_ID);GGSCI (xffdbrh5) 8> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNING EXTRACT STOPPED EXT_1 00:00:00 00:00:22 GGSCI (xffdbrh5) 9> start ext_1Sending START request to MANAGER ...EXTRACT EXT_1 startingGGSCI (xffdbrh5) 10> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNING EXTRACT RUNNING EXT_1 00:01:18 00:00:00 |
配置pump data进程
GGSCI (xffdbrh5) 1> edit param dpe_1extract dpe_1dynamicresolutionpassthrurmthost 192.168.137.251, mgrport 7839, compressrmttrail ./dirdat/t1numfiles 5000TABLE xifenfei.t_xifenfei;GGSCI (xffdbrh5) 2> start dpe_1Sending START request to MANAGER ...EXTRACT DPE_1 startingGGSCI (xffdbrh5) 3> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNING EXTRACT RUNNING DPE_1 00:00:00 00:16:47 EXTRACT RUNNING EXT_1 00:00:00 00:00:07 |
目标端数据库准备
[oracle@xifenfei ~]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.4.0 - Production on Thu Feb 13 00:40:19 2014Copyright (c) 1982, 2007, Oracle. All Rights Reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> create user ogg identified by oracle;User created.SQL> grant dba to ogg;Grant succeeded.SQL> create user xff identified by xifenfei;User created.SQL> grant dba to xff;Grant succeeded.SQL> conn xff/xifenfeiConnected.SQL> create database link syc_data 2 connect to ogg identified by oracle 3 using ‘(DESCRIPTION = 4 (ADDRESS_LIST = 5 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.252)(PORT = 1521)) 6 ) 7 (CONNECT_DATA = 8 (SERVER = DEDICATED) 9 (SERVICE_NAME = ora10g) 10 ) 11 )‘;Database link created.SQL> select count(*) from xifenfei.t_xifenfei@syc_data; COUNT(*)---------- 9917SQL> SELECT CURRENT_SCN FROM V$DATABASE@syc_data;CURRENT_SCN----------- 793069SQL> create table xff.t_xff as select OWNER, OBJECT_NAME, SUBOBJECT_NAME, 2 > OBJECT_ID from xifenfei.t_xifenfei@syc_data AS OF SCN 793069;Table created.SQL> alter table xff.t_xff add constraint pk_t_xff primary key(object_id); Table altered. |
目标端mgrp配置
[oracle@xifenfei ogg]$export LD_LIBRARY_PATH=/home/oracle/amdu:$ORACLE_HOME/lib:/u01/oracle/oradata/ogg[oracle@xifenfei ogg]$ ./ggsciOracle GoldenGate Command Interpreter for OracleVersion 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBOLinux, x86, 32bit (optimized), Oracle 10g on Apr 23 2012 07:06:02Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.GGSCI (xifenfei) 8> edit param mgrport 7839DYNAMICPORTLIST 7840-7850PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7autorestart extract *, waitminutes 1, retries 60autorestart replicat *, waitminutes 1, retries 60LAGREPORTHOURS 1LAGINFOMINUTES 30LAGCRITICALMINUTES 45GGSCI (xifenfei) 12> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER STOPPED GGSCI (xifenfei) 13> create subdirsCreating subdirectories under current directory /u01/oracle/oradata/oggParameter files /u01/oracle/oradata/ogg/dirprm: already existsReport files /u01/oracle/oradata/ogg/dirrpt: already existsCheckpoint files /u01/oracle/oradata/ogg/dirchk: already existsProcess status files /u01/oracle/oradata/ogg/dirpcs: already existsSQL script files /u01/oracle/oradata/ogg/dirsql: already existsDatabase definitions files /u01/oracle/oradata/ogg/dirdef: already existsExtract data files /u01/oracle/oradata/ogg/dirdat: already existsTemporary files /u01/oracle/oradata/ogg/dirtmp: already existsStdout files /u01/oracle/oradata/ogg/dirout: already existsGGSCI (xifenfei) 2> dblogin userid ogg, password oracleSuccessfully logged into database.GGSCI (xifenfei) 3> add checkpointtable ogg.ggs_checkpoint Successfully created checkpoint table ogg.ggs_checkpoint.GGSCI (xifenfei) 4> EDIT PARAMS ./GLOBALScheckpointtable ogg.ggs_checkpointGGSCI (xifenfei) 5> start mgrManager started.GGSCI (xifenfei) 6> add replicat rep_1,exttrail ./dirdat/t1,checkpointtable ogg.ggs_checkpointREPLICAT added.GGSCI (xifenfei) 7> edit params rep_1 REPLICAT rep_1USERID ogg,PASSWORD oracleREPORTCOUNT EVERY 30 MINUTES, RATEREPERROR DEFAULT, ABENDnumfiles 5000assumetargetdefsDISCARDFILE ./dirrpt/rep_1.dsc, APPEND, MEGABYTES 1000DISCARDROLLOVER AT 3:00ALLOWNOOPUPDATESMAP xifenfei.t_xifenfei, TARGET xff.t_xff;GGSCI (xifenfei) 8> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNING REPLICAT STOPPED REP_1 00:00:00 00:01:45 GGSCI (xifenfei) 9> start rep_1,aftercsn 793069Sending START request to MANAGER ...REPLICAT REP_1 startingGGSCI (xifenfei) 10> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNING REPLICAT RUNNING REP_1 00:00:00 00:00:01 |
测试数据库同步
--源端库SQL> desc t_XIFENFEI Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER VARCHAR2(30) OBJECT_NAME VARCHAR2(128) SUBOBJECT_NAME VARCHAR2(30) OBJECT_ID NOT NULL NUMBER DATA_OBJECT_ID NUMBER OBJECT_TYPE VARCHAR2(19) CREATED DATE LAST_DDL_TIME DATE TIMESTAMP VARCHAR2(19) STATUS VARCHAR2(7) TEMPORARY VARCHAR2(1) GENERATED VARCHAR2(1) SECONDARY VARCHAR2(1)SQL> update t_XIFENFEI set owner=‘www.xifenfei.com‘ where rownum<100;99 rows updated.SQL> commit;Commit complete.--目标端库SQL> desc xff.t_xff Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER VARCHAR2(30) OBJECT_NAME VARCHAR2(128) SUBOBJECT_NAME VARCHAR2(30) OBJECT_ID NOT NULL NUMBERSQL> select count(*) from xff.t_xff where owner=‘www.xifenfei.com‘; COUNT(*)---------- 99--源端库SQL> delete from t_XIFENFEI where owner=‘www.xifenfei.com‘;99 rows deleted.SQL> commit;Commit complete.--目标端SQL> select count(*) from xff.t_xff where owner=‘www.xifenfei.com‘; COUNT(*)---------- 0--源端库SQL> insert into xifenfei.t_xifenfei(owner,object_id) values(‘www.xifenfei.com‘,1);1 row created.SQL> commit;Commit complete.--目标端库SQL> select count(*) from xff.t_xff where owner=‘www.xifenfei.com‘; COUNT(*)---------- 1SQL> select * from xff.t_xff where owner=‘www.xifenfei.com‘;OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID-------------------- ------------------- ------------------------------ ----------www.xifenfei.com |
原文:https://www.cnblogs.com/ss-33/p/12930363.html