1.说明
在RAC环境中,由于两个节点都部署了OGG,而且部署同一套。而其中一个节点的OGG后期不需要了,需要卸载掉。
在卸载时候忽略了一个问题,把触发器ggs_ddl_trigger_before给删掉了,由于触发器名称相同,所以另一个节点的OGG就无法正常捕获DDL操作。
通过实验证明这个触发器的名称ggs_ddl_trigger_before对于DDL操作并没有影响。
OGG-ggs_ddl_trigger_before触发器名称对于DDL同步没有影
2.恢复
恢复方法就是重新创建触发器并启用即可,但是通过官方脚本ddl_setup.sql来创建触发器会报错,因为当前OGG已运行(哪怕关闭抽取进程),OGG用户下的表会有锁。而对于kill会话操作,可能会对ogg有影响。所以我这里直接把创建触发器的语句给提了出来,就单纯的创建触发器就行了。
创建触发器脚本:https://pan.baidu.com/s/1vSWv5N7abP8d_CJzdR6ocg
然后将脚本中的管理OGG的用户名替换为你环境中的用户名即可。默认是:ogg
- 1)创建触发器
SQL> @ggs_ddl_trigger_before.sql
Trigger created. - 2)启用触发器
SQL> ALTER TRIGGER sys.ggs_ddl_trigger_before ENABLE;
Trigger altered. - 3)验证
源库:新建一个表t2
SQL> create table t2(id int);
Table created.
目标库:
SQL> desc t2;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER(38)
恢复成功。