当前位置:   article > 正文

oracle dblink+trigger触发器实现两个库数据同步_oracle 双库同步

oracle 双库同步

库A数据迁移到新库B。

dblink和trigger都在有数据的库中创建:

  1. create database link "dblink名称"
  2. connect to "目标库登录名" identified by "目标库密码"
  3. using '(DESCRIPTION =
  4. (ADDRESS_LIST =
  5. (ADDRESS =
  6. (PROTOCOL = TCP)
  7. (HOST = "库ip")
  8. (PORT = "库端口")) )
  9. (CONNECT_DATA = (SERVICE_NAME = "服务名") ) )';
  10. --删除dblink:drop database link 名称; 需要在创建的库执行

创建当前库的表与之相对应的映射表实现映射方式①

  1. --drop trigger "删除触发器名称" --删除触发器
  2. CREATE
  3. TRIGGER "触发器名称"
  4. BEFORE INSERT OR UPDATE OR DELETE
  5. ON "当前库要同步的表名"
  6. FOR EACH ROW
  7. declare
  8. pragma autonomous_transaction; --指定自由事务处理 解决触发器中不能提交事务问题
  9. BEGIN
  10. case
  11. when inserting then
  12. insert into "目标库需要同步的表"@"dblink名称"
  13. (
  14. id,
  15. accountno,
  16. officeid
  17. )
  18. values
  19. (
  20. :new.id,
  21. :new.accountno,
  22. :new.officeid
  23. );
  24. when updating then
  25. update "目标库需要同步的表"@"dblink名称"
  26. set
  27. accountno =:new.accountno,
  28. officeid =:new.officeid
  29. where id=:new.id;
  30. when deleting then
  31. delete "目标库需要同步的表"@"dblink名称"
  32. where id =:old.id;
  33. end case;
  34. commit;
  35. END;

创建当前库的表与之相对应的映射表实现映射方式②

  1. CREATE OR REPLACE TRIGGER "触发器名称"
  2. AFTER INSERT OR UPDATE OR DELETE ON "当前库要同步的表名"
  3. FOR EACH ROW
  4. declare
  5. pragma autonomous_transaction;
  6. BEGIN
  7. IF INSERTING THEN
  8. insert into "目标库需要同步的表"@"dblink名称"
  9. (
  10. id,
  11. officeid,
  12. currencyid
  13. )
  14. values
  15. (
  16. :new.id,
  17. :new.officeid,
  18. :new.currencyid
  19. );
  20. ELSIF UPDATING THEN
  21. update "目标库需要同步的表"@"dblink名称"
  22. set
  23. officeid = :new.officeid,
  24. currencyid = :new.currencyid
  25. where id = :new.ID;
  26. ELSIF DELETING THEN
  27. delete from "目标库需要同步的表"@"dblink名称" where id = :old.id;
  28. END IF;
  29. commit;
  30. END;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/781625
推荐阅读
相关标签
  

闽ICP备14008679号