Oracle 数据库表同步方法浅议

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

 

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


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

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

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

二.通过Stream进行表同步


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

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

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

三.通过MV进行表同步


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

  • 优点: 性能不错,

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

四.通过CDC进行同步

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

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

  • 缺点:同触发器

五.通过GoldenGate进行同步


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

posted @ 2013-11-18 14:53  jerry_xing8  阅读(7527)  评论(0编辑  收藏  举报