ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 逻辑standby上的trigger

逻辑standby上的trigger

原创 Linux操作系统 作者:feilo4r 时间:2010-03-26 09:15:23 0 删除 编辑

        昨天忘了记这个东东,另一部门的同事想在一个逻辑standby上自己的schema中做一个trigger,用以记录另一个schema下的一张表的增删改的信息。虽然这个事情最后取消了,但是有一个问题有待解决,还有一个结论有待去验证。

        这个trigger的内容如下:
create or replace trigger CDC.T$COUPONITEM
  after insert or update or delete on SEASHELL.COUPONITEM
  for each row
declare
  V_FLAG VARCHAR(1);
  V_ID   NUMBER(12);
begin
  if inserting then
    V_ID   := :new.ID;
    V_FLAG := 'I';
  end if;
  if updating then
    V_ID   := :new.ID;
    V_FLAG := 'I';
  end if;
  if deleting then
    V_ID   := :old.ID;
    V_FLAG := 'D';
  end if;
  insert into CDC.J$COUPONITEM
    (JRN_SUBSCRIBER, JRN_CONSUMED, JRN_FLAG, JRN_DATE, ID)
    select JRN_SUBSCRIBER, '0', V_FLAG, sysdate, V_ID
      from CDC.SNP_SUBSCRIBERS
     where JRN_TNAME = 'SEASHELL.COUPONITEM'
    /* The following line can be uncommented for symetric replication */
    /* and  upper(USER) <> upper('cdc') */
    ;

        问题:在create trigger时多次出现“没有权限”的问题,再依次赋予了create trigger和insert、update、delete on SEASHELL.COUPONITEM之后,问题依然指向SEASHELL.COUPONITEM,所以要弄清楚,到底要赋什么样的权限才可以?

        结论:在逻辑standby上像trigger,job这样的定时或者触发任务是会被skip掉的,不会执行,目的很明确,是为了避免主库和备库会有重复,但原理是什么呢?但是如果只是逻辑standby上自己独有的schema下的trigger是可以执行的,为什么?

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11258275/viewspace-630430/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 关于赋权 grant
请登录后发表评论 登录
全部评论

注册时间:2008-09-19

  • 博文量
    33
  • 访问量
    97928