• Oracle Golden Gate 系列十七 GG 一对多 realtime data distribution 说明 与 示例


    一.官网说明

    A datadistribution configuration is a one-to-many configuration. Oracle GoldenGatesupports synchronization of a source database to any number of target systems.Oracle GoldenGate supports like-to-like or heterogeneous transfer of data, withcapabilities for filtering and conversion on any system in the configuration(support varies by database platform).

    --GG 支持一个Source 对任意个Target 的同步。

     

    1.1 Considerations for a data-distribution configuration

    1.1.1 Fault tolerance

    For a datadistribution configuration, the use of data pumps ensures that if network connectivityto any of the targets fails, the captured data still can be sent to the other targets.Use a primary Extract group and a data-pump Extract group in the source configuration,one for each target.

    --对于data distribution,需要使用data pump来预防网络故障。如果有多个Target,则每个Target 对应一个Data pump。

     

    1.1.2 Filtering and conversion

    You can use anyprocess to perform filtering and conversion. However, using the data pumps toperform filtering operations removes that processing overhead from the primary Extractgroup, and it reduces the amount of data that is sent across the network.

     

    1.1.2.1 To filter data,you can use:

    (1)    A FILTER or WHERE clause in aTABLE statement (Extract) or in a MAP statement (Replicat).

    (2)    A SQL query or procedure

    (3)    User exits

    1.1.2.2 To transformdata, you can use:

    (1)    Native Oracle GoldenGateconversion functions

    (2)    A user exit from the Extract orReplicat process that applies rules from an external transformation solution,then returns the manipulated data to Oracle GoldenGate.

    (3)    Replicat to deliver datadirectly to an ETL solution or other transformation engine.

     

    1.1.3 Data volume

    The standard configuration is sufficientif:

    (1)    The transaction load isconsistent and of moderate volume that is spread out more or less evenly amongall of the objects to be replicated.

    (2)    There are none of thefollowing: tables that are subject to long-running transactions, tables thathave a very large number of columns that change, or tables that contain columnsfor which Oracle GoldenGate must fetch from the database (generally columnswith LOBs, columns that are affected by SQL procedures executed by Oracle GoldenGate,and columns that are not logged to the transaction log).

    If your environment does not satisfy those conditions, consider adding one or more setsof parallel processes.

     

    1.1.4 Additional information

    (1)    For additional system anddatabase configuration requirements, see the Oracle GoldenGate Installation andSetup Guide for your database type.

    (2)    For information aboutadditional requirements for Teradata Extract configurations, see the OracleGoldenGate Teradata Installation and Setup Guide.

    (3)    For detailed instructions onconfiguring Oracle GoldenGate change capture and delivery groups, see“Configuring online change synchronization” on page 120.

    (4)    For complete syntax anddescriptions of the Oracle GoldenGate commands and parameters, see the OracleGoldenGate Windows and UNIX Reference Guide.

    1.2 Creating a data distribution configuration

    Refer to Figure 12 for a visualrepresentation of the objects you will be creating.

    Figure 12 Oracle GoldenGate configurationelements for data distribution

     

    1.2.1 Source system

    -- To configure theManager process

    1. On the source, configure the Managerprocess。

    2. In the Manager parameter file, use thePURGEOLDEXTRACTS parameter to control the purging of files from the localtrail.

     

    --To configure theprimary Extract

    3. On the source, use the ADD EXTRACT commandto create a primary Extract group. For documentation purposes, this group iscalled ext.

    ADD EXTRACT <ext>, TRANLOG, BEGIN<time>, [, THREADS]

    注意: Use TRANLOG as the data source option. For DB2 on Z/OS, specify thebootstrap data set (BSDS) name following TRANLOG.

    4. On the source, use the ADD EXTTRAILcommand to create a local trail.

    ADD EXTTRAIL<local_trail>, EXTRACT <ext>

    注意: Use the EXTRACT argument to link this trail to the primary Extractgroup. The primary Extract group writes to this trail, and the data pump groupsread it.

    5. On the source, use the EDIT PARAMScommand to create a parameter file for the primary Extract group. Include thefollowing parameters plus any others that apply to your database environment.

    -- Identify the Extract group:

    EXTRACT <ext>

    -- Specify database login information asneeded for the database:

    [SOURCEDB <dsn_1>,][USERID<user>[, PASSWORD <pw>]]

    -- Specify the local trail that thisExtract writes to:

    EXTTRAIL <local_trail>

    -- Specify tables to be captured:

    TABLE <owner>.<table>;

    注意: Use EXTTRAIL to specify the local trail.

     

    --To configure the datapump Extract groups

    6. On the source, use the ADD EXTRACTcommand to create a data pump for each target system. For documentationpurposes, these groups are called pump_1 and pump_2.

    ADD EXTRACT <pump_1>, EXTTRAILSOURCE<local_trail>, BEGIN <time>

    ADD EXTRACT <pump_2>, EXTTRAILSOURCE<local_trail>, BEGIN <time>

    注意: UseEXTTRAILSOURCE as the data source option, and supply the name of the localtrail.

    7. On the source, use the ADD RMTTRAILcommand to specify a remote trail that will be created on each of the targetsystems.

    ADD RMTTRAIL <remote_trail_1>,EXTRACT <pump_1>

    ADD RMTTRAIL <remote_trail_2>,EXTRACT <pump_2>

    注意: Use the EXTRACT argument to link each remote trail to a differentdata pump group. The linked data pump writes to this trail.

    8. On the source, use the EDIT PARAMScommand to create a parameter file for each of the

    data pumps. Include the followingparameters plus any others that apply to your

    database environment.

    Data pump_1

    -- Identify the data pump group:

    EXTRACT <pump_1>

    -- Specify database login information asneeded for the database:

    [SOURCEDB <dsn_1>,][USERID<user>[, PASSWORD <pw>]]

    -- Specify the name or IP address of thefirst target system:

    RMTHOST <target_1>, MGRPORT<portnumber>

    -- Specify the remote trail on the firsttarget system:

    RMTTRAIL <remote_trail_1>

    -- Allow mapping, filtering, conversion orpass data through as-is:

    [PASSTHRU | NOPASSTHRU]

    -- Specify tables to be captured:

    TABLE <owner>.<table>;

    Data pump_2

    -- Identify the data pump group:

    EXTRACT <pump_2>

    -- Specify database login information asneeded for the database:

    [SOURCEDB <dsn_1>,][USERID<user>[, PASSWORD <pw>]]

    -- Specify the name or IP address of thesecond target system:

    RMTHOST <target_2>, MGRPORT<portnumber>

    -- Specify the remote trail on the secondtarget system:

    RMTTRAIL <remote_trail_2>

    -- Allow mapping, filtering, conversion orpass data through as-is:

    [PASSTHRU | NOPASSTHRU]

    -- Specify tables to be captured:

    TABLE <owner>.<table>;

    NOTE :

    To use PASSTHRUmode, the names of the source and target objects must be identical. No columnmapping, filtering, SQLEXEC functions, transformation, or other functions thatrequire data manipulation can be specified in the parameter file. You cancombine normal processing with pass-through processing by pairing PASSTHRU andNOPASSTHRU with different TABLE statements.

     

    1.2.2 Target systems

    --To configure theManager process

    9. On each target, configure the Managerprocess.

    10. In each Manager parameter file, use thePURGEOLDEXTRACTS parameter to control the purging of files from the trail.

     

    --To configure theReplicat groups

    11. On each target, create a Replicatcheckpoint table.

    12. On each target, use the ADD REPLICATcommand to create a Replicat group for the remote trail on that system. Fordocumentation purposes, these groups are called rep_1 and rep_2.

    Target_1

    ADD REPLICAT <rep_1>, EXTTRAIL<remote_trail_1>, BEGIN <time>

    Target_2

    ADD REPLICAT <rep_2>, EXTTRAIL <remote_trail_2>,BEGIN <time>

    注意:Use the EXTTRAIL argument to link the Replicat group to the correcttrail.

    13. On each target, use the EDIT PARAMScommand to create a parameter file for the Replicat group. Use the followingparameters plus any others that apply to your database environment.

    Target_1

    -- Identify the Replicat group:

    REPLICAT <rep_1>

    -- State whether or not source and targetdefinitions are identical:

    SOURCEDEFS <full_pathname> |ASSUMETARGETDEFS

    -- Specify database login information as neededfor the database:

    [TARGETDB <dsn_2>,] [USERID <userid>[, PASSWORD <pw>]]

    -- Specify error handling rules:

    REPERROR (<error>, <response>)

    -- Specify tables for delivery:

    MAP <owner>.<table>, TARGET<owner>.<table>[, DEF <template name>];

    Target_2

    -- Identify the Replicat group:

    REPLICAT <rep_2>

    -- State whether or not source and targetdefinitions are identical:

    SOURCEDEFS <full_pathname> |ASSUMETARGETDEFS

    -- Specify database login information asneeded for the database:

    [TARGETDB <dsn_3>,] [USERID <userid>[, PASSWORD <pw>]]

    -- Specify error handling rules:

    REPERROR (<error>, <response>)

    -- Specify tables for delivery:

    MAP <owner>.<table>, TARGET<owner>.<table>[, DEF <template name>];

    注意: You can use anynumber of MAP statements for any given Replicat group. All MAP statements for agiven Replicat group must specify the same objects that are

    contained in the trail that is linked tothe group.

    二.示例

    我这里用3个节点做测试,节点1做Source DB,节点2和3做Target DB。 从GG1 发送data 到GG2和GG3。

    DB:Oracle 11.2.0.3

    OS: redhat 5.4

    2.1 设置Manager

    GGSCI (gg1) 3> edit params mgr

    PORT 7809

    2.2 设置Extract进程

    GGSCI (gg1) 11> add extractext1,tranlog, begin now

    GGSCI (gg1) 12> add exttrail/u01/ggate/dirdat/lt, extract ext1

    GGSCI (gg1) 13> edit params ext1

    GGSCI (gg1) 4> view params ext1

    extract ext1

    ENCRYPTTRAIL

    userid ggate@gg1,passwordAACAAAAAAAAAAAFAPHODADQGAJVDSHPG,encryptkey default

    --rmthost gg2,mgrport 7809

    --rmttrail /u01/ggate/dirdat/lt

    exttrail /u01/ggate/dirdat/lt

    ddl include all objname dave.pdba;

    table dave.pdba;

    这里对密码进行了加密,有关加密这块,参考:

    Oracle Golden Gate 系列十六 --配置 GG 安全 说明 与 示例

    http://blog.csdn.net/tianlesoftware/article/details/6991263

    2.3 在Source 端配置 DataPump

    因为我们要发送到2个Target,所以要配置2个Data Pump 进程。

    --data pump1:

    GGSCI (gg1) 49> add extractdpump,exttrailsource /u01/ggate/dirdat/lt

    GGSCI (gg1) 51> add rmttrail/u01/ggate/dirdat/lt, extract dpump

    GGSCI (gg1) 5> view params dpump

    extract dpump

    userid ggate@gg1, password ggate

    rmthost gg2, mgrport7809,compress,compressthreshold 0

    rmttrail /u01/ggate/dirdat/lt

    passthru

    table dave.pdba;

    --data pump2:

    GGSCI (gg1) 49> add extract dpump2,exttrailsource/u01/ggate/dirdat/lt

    GGSCI (gg1) 51> add rmttrail/u01/ggate/dirdat/lt, extract dpump2

    GGSCI (gg1) 5> view params dpump2

    extract dpump2

    userid ggate@gg1, password ggate

    rmthost gg3, mgrport7809,compress,compressthreshold 0

    rmttrail /u01/ggate/dirdat/lt

    passthru

    table dave.pdba;

    这里注意Data Pump 默认是从lt000000 开始读取trail 文件,如果是新搭建的GG 同步,那么都是从lt000000开始处理,所以没有问题,如果是后来修改称data pump,就需要根据extract 进程的错误提示信息,使用如下命令:

           GGSCI(gg1) 82> alter extract dpump,extseqno 2,extrba1965317

    具体参考:

    Oracle GoldenGate 系列十 -- 配置 DataPump process 说明 与 示例

    http://blog.csdn.net/tianlesoftware/article/details/6978501

    2.4 分别在2个Target 配置Replicat

    --配置checkpoint

    GGSCI (gg2) 6> EDIT PARAMS ./GLOBALS

    GGSCHEMA ggate

    CHECKPOINTTABLE ggate.checkpoint

    GGSCI (gg2) 12> dblogin useridggate@gg2,password ggate

    GGSCI (gg2) 13> add checkpointtableggate.checkpoint

    这部分,参考:

    Oracle Golden Gate 系列十三 --配置GG进程检查点(checkpoint) 说明

    http://blog.csdn.net/tianlesoftware/article/details/6983928

    --配置 Replicat:

    GGSCI (gg2) 14> add replicatrep1,exttrail /u01/ggate/dirdat/lt, checkpointtable ggate.checkpoint

    GGSCI (gg2) 2> view params rep1

    replicat rep1

    DECRYPTTRAIL

    ASSUMETARGETDEFS

    userid ggate@gg2,password ggate

    discardfile/u01/ggate/dirdat/rep1_discard.txt, append, megabytes 10

    --HANDLECOLLISIONS

    ddl include all

    ddlerror default ignore retryop

    map dave.pdba, target dave.pdba;

    这里面有一个数据初始化的问题,具体参考:

    Oracle Golden Gate 系列九 --GG 数据初始化装载 说明 与 示例

    http://blog.csdn.net/tianlesoftware/article/details/6976551

    Oracle GoldenGate 系列十二 --GG 数据初始化装载二 基于SCN 的初始化 说明 与 示例

    http://blog.csdn.net/tianlesoftware/article/details/6982908

    2.5 启动相关的进程进行

    --Source DB

    GGSCI (gg1) 17> start mgr

    GGSCI (gg1) 19> start ext1

    GGSCI (gg1) 26> info dpump2

    EXTRACT   DPUMP2    Initialized   2011-11-19 22:26   Status STOPPED

    Checkpoint Lag       00:00:00 (updated 00:12:34 ago)

    Log Read Checkpoint  File /u01/ggate/dirdat/lt000000

                         First Record  RBA 0

    GGSCI (gg1) 28> info dpump

    EXTRACT   DPUMP     Last Started 2011-11-1915:22   Status ABENDED

    Checkpoint Lag       00:00:00 (updated 06:02:32 ago)

    Log Read Checkpoint  File /u01/ggate/dirdat/lt000014

                         2011-11-1915:44:00.966309  RBA 1009

    GGSCI (gg1) 29> alterextract dpump2,extseqno 14,extrba 0

    EXTRACT altered.

    GGSCI (gg1) 30> info dpump2

    EXTRACT   DPUMP2    Initialized   2011-11-19 22:40   Status STOPPED

    Checkpoint Lag       00:00:00 (updated 00:00:03 ago)

    Log Read Checkpoint  File /u01/ggate/dirdat/lt000014

                         First Record  RBA 0

    GGSCI (gg1) 31> start dpump

    GGSCI (gg1) 32> start dpump2

    GGSCI (gg1) 39> info all

    Program    Status      Group       Lag           Time Since Chkpt

    MANAGER    RUNNING                                           

    EXTRACT    RUNNING     DPUMP       00:00:00      00:00:01   

    EXTRACT    RUNNING     DPUMP2      00:00:00      00:01:37   

    EXTRACT    RUNNING     EXT1        00:00:00      00:00:09  

    --2个TargetDB

    GGSCI (gg3) 8> start rep1

    GGSCI (gg3) 10> info all

    Program    Status      Group       Lag           Time Since Chkpt

    MANAGER    RUNNING                                          

    REPLICAT   RUNNING     REP1        00:00:00      00:00:04   

    GGSCI (gg2) 15> start rep1

    GGSCI (gg2) 17> info all

    Program    Status      Group       Lag           Time Since Chkpt

    MANAGER    RUNNING                                          

    REPLICAT   RUNNING     REP1        00:00:00      00:00:04   

    2.6 在Source 进行DML操作,验证同步

    --Source DB

    SQL> conn dave/dave;

    Connected.

    SQL> select count(*) from pdba;

     COUNT(*)

    ----------

      2678533

    --Targt 1:

    SQL> conn dave/dave;

    Connected.

    SQL> select count(*) from pdba;

     COUNT(*)

    ----------

       2678533

    --Target 2:

    SQL> conn dave/dave;

    Connected.

    SQL> select count(*) from pdba;

     COUNT(*)

    ----------

      2678533

    --在Source 进行DML操作:

    SQL> delete from pdba whererownum<1000;

    999 rows deleted.

    SQL> commit;

    Commit complete.

    SQL> select count(*) from pdba;

     COUNT(*)

    ----------

      2677534

    --Target 1:

    SQL> select count(*) from pdba;

     COUNT(*)

    ----------

      2677534

    --Target 2:

    SQL> select count(*) from pdba;

     COUNT(*)

    ----------

      2677534

    同步成功。 至此GG 一对多的测试结束。

    -------------------------------------------------------------------------------------------------------

    版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

    Blog:     http://blog.csdn.net/tianlesoftware

    Weibo: http://weibo.com/tianlesoftware

    Email:   tianlesoftware@gmail.com

    Skype: tianlesoftware

    -------加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请----

    DBA1 群:62697716(满);   DBA2 群:62697977(满)  DBA3 群:62697850(满)  

    DBA 超级群:63306533(满);  DBA4 群:83829929(满) DBA5群: 142216823(满) 

    DBA6 群:158654907(满)   DBA7 群:69087192(满)  DBA8 群:172855474

    DBA 超级群2:151508914  DBA9群:102954821     聊天 群:40132017(满)

  • 相关阅读:
    数据库自定义表值函数Split(@LongStr, @SplitStr, @IsDistinct )
    牛客_{}大括号里面的内容都会执行,如果它不是成员函数的时候,看成是构造函数中的方法;
    剑指offer——替换字符串
    剑指offer_快速查找递增二维数组中是否存在目标
    IP地址理解_IP地址=网络地址+主机地址,但是具体前面多少是网络地址看题目说明
    TCP/IP三次握手
    牛客_剑指offer_重建二叉树,再后续遍历_递归思想_分两端
    牛客OJ——[编程题]A+B和C__如何输入多组测试数据(测试OK)
    学术_聚类种类分析(1)(转载)
    HW-找7(测试ok满分注意小于等于30000的条件)
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3609480.html
Copyright © 2020-2023  润新知