签到成功

知道了

CNDBA社区CNDBA社区

OGG-ggs_ddl_trigger_before触发器名称对于DDL同步没有影响

2018-07-31 15:34 2145 0 原创 OGG
作者: Expect-乐

1.说明

熟悉OGG的都知道,OGG是通过ggs_ddl_trigger_before触发器来捕获DDL操作并同步到目标库中,在一次部署RAC环境两个节点的OGG,要求两个节点部署两套OGG,由于默认情况下创建的DDL触发器名称都是相同,如果OGG管理用户名称不同,这样会出现覆盖情况。
通过实验证明触发器的名称并不影响DDL的同步,也就是我们可以创建一个ggs_ddl_trigger_before_ogg2的触发器来给节点2上的OGG使用。

2.证明

  • 1).删除原来触发器http://www.cndba.cn/Expect-le/article/2916http://www.cndba.cn/Expect-le/article/2916

      SQL> drop trigger sys.ggs_ddl_trigger_before_test;
      Trigger dropped.
      SQL> select trigger_name from user_triggers where trigger_name='GGS_DDL_TRIGGER_BEFORE';
      no rows selected
    
  • 2).利用脚本创建触发器
    脚本可通过以下链接下载:
    https://pan.baidu.com/s/1vSWv5N7abP8d_CJzdR6ocg
    注:脚本中的用户名是:ogg,如果你的环境管理OGG的用户名不是ogg则需要修改以下。
    如:

      IF "OGG" .DDLReplication.isRecycle(stmt) = 1 THEN
      IF "OGG" .DDLReplication.trace_level >= 0 THEN
          "OGG" .trace_put_line ('DDL', 'DDL ignored, it is recycle bin DDL, text [' || stmt || ']');
      END IF;
      IF "OGG" .DDLReplication.sql_trace = 1 THEN
          dbms_session.set_sql_trace(false);
      END IF;
      -- just ignore recyclebin objects
      "OGG" .DDLReplication.setCtxInfo(-1,-1,-1,-1,-1);
      RETURN;
      END IF;
    

    修改脚本中的触发器名称:http://www.cndba.cn/Expect-le/article/2916

      CREATE OR REPLACE TRIGGER
      sys.ggs_ddl_trigger_before_test
      BEFORE ddl ON DATABASE
      DECLARE
    

    然后创建触发器http://www.cndba.cn/Expect-le/article/2916

      SQL> @ggs_ddl_trigger_before.sql
      Trigger created.
    

    可以看到触发器已经创建成功http://www.cndba.cn/Expect-le/article/2916

      SQL> select trigger_name from user_triggers where trigger_name='GGS_DDL_TRIGGER_BEFORE_TEST';
      TRIGGER_NAME
      ------------------------------------------------------------
      GGS_DDL_TRIGGER_BEFORE_TEST
    

    启用触发器http://www.cndba.cn/Expect-le/article/2916http://www.cndba.cn/Expect-le/article/2916

      SQL> ALTER TRIGGER sys.ggs_ddl_trigger_before_test enable;
      Trigger altered.
    
  • 3).验证DDL同步是否正常
    源库将表添加一列http://www.cndba.cn/Expect-le/article/2916

      SQL> alter table t1 add(b int);
      Table altered.
    

    目标库:
    OGG日志中可以看到:

      2018-07-31 15:30:03  INFO    OGG-01407  Oracle GoldenGate Delivery for Oracle, rpt01.prm:  Setting current schema for DDL operation to [test].
      2018-07-31 15:30:03  INFO    OGG-00484  Oracle GoldenGate Delivery for Oracle, rpt01.prm:  Executing DDL operation.
      2018-07-31 15:30:03  INFO    OGG-00483  Oracle GoldenGate Delivery for Oracle, rpt01.prm:  DDL operation successful.
      2018-07-31 15:30:03  INFO    OGG-01408  Oracle GoldenGate Delivery for Oracle, rpt01.prm:  Restoring current schema for DDL operation to [ogg]
    

    查看表结构:

      SQL> desc t1
       Name                       Null?    Type
       ----------------------------------------- -------- ----------------------------
       ID                            NUMBER(38)
       NAME                            VARCHAR2(50)
       AGE                            NUMBER(38)
       ADDRESS                        VARCHAR2(300)
       A                            NUMBER(38)
       B                            NUMBER(38)  --可以看到B字段已经成功同步过来
    

    3.总结

    OGG同步DDL操作,对于DDL触发器名称没有要求。

    http://www.cndba.cn/Expect-le/article/2916
    http://www.cndba.cn/Expect-le/article/2916

版权声明:本文为博主原创文章,未经博主允许不得转载。

OGG 触发器 ggs_ddl_trigger_before

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Expect-乐

Expect-乐

关注

Without the continuous bitter cold, there can be no fragrant plum blossom

  • 336
    原创
  • 6
    翻译
  • 100
    转载
  • 41
    评论
  • 访问:1379045次
  • 积分:1957
  • 等级:核心会员
  • 排名:第3名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ