zoukankan      html  css  js  c++  java
  • Oracle 数据库表同步方法浅议

    总结一下Oracle数据库表级别的复制同步

     

    一.通过触发器进行表的复制


    • 原理,是监听表上都某一字段进行的DML操作,然后得到DML操作的数据,重新在另一个表上执行DML操作。

    • 优点: 简单,编写一个触发器就可以,不需要过多的配置。 易修改,遇到了问题很好定位。

    • 缺点:表大的话是有性能问题,如果表中含有blob列,是无法监听到其改变的,而且整个insert 必须先insert 一个空的blob,再进行update操作,而且很有可能出现数据不为空,blob为空的情况。

    二.通过Stream进行表同步


    • 原理,Stream的功能很强大的,主要是进行多个数据库之间的同步,在原库和目的库,分别启动捕获队列,捕获进程和加载进程和加载队列,捕获进程通过捕获进行DML操作的REDO log日志,所以对数据的性能不造成什么影响。

    • 优点: 性能好,对原数据库结构没有侵入。对BLOB支持也很好。

    • 缺点: 配置很复杂,原库和目的库通过DBLINK进行通信,配置的工作量大。如果队列出现问题,整个同步将无法进行。

    三.通过MV进行表同步


    原理,物化视图 (MV)在一个段中存储查询结果,并且能够在提交查询时将结果返回给用户,从而不再需要重新执行查询 — 在查询要 执行几次时(这在数据仓库环境中非常常见),这是一个很大的好处。物化视图可以利用一个快速刷新机制从基础表中全部或增量刷新。利用物化视图的增量刷新功能来进行同步的。

    • 优点: 性能不错,

    • 缺点: 需要对原有结构改动较大,一般只在数据仓库中使用,存在一个刷新的时间窗。

    四.通过CDC进行同步

    • 原理,也是一种进行数据同步捕获的技术,主要通过触发器+临时表+捕获标识来实现的。

    • 优点:如果作为一种ETL手段还可

    • 缺点:同触发器

    五.通过GoldenGate进行同步


    没什么好说的,基本上,以上几种方式都可作。但是要收费的。

  • 相关阅读:
    Backbone.js 1.0.0源码架构分析(一)
    汤姆大叔的博客(深入理解JavaScript系列(2):揭秘命名函数表达式)
    求职之路(拿到百度、美团、趋势科技、华为offer)
    请大家注意这个网站www.haogongju.net
    后缀数组求最长重复子串
    2015阿里在线笔试题求两个字符串的最长子串
    剑指offer42:翻转单词顺序 VS 左旋转字符串(更高效、简便的解法)
    求和为s的连续正数序列
    数组中的逆序对
    求一串字符串的全排列和所有组合
  • 原文地址:https://www.cnblogs.com/jerryxing/p/3429489.html
Copyright © 2011-2022 走看看