从Oracle向MySQL或其他库的数据复制方法

    最近花了几天时间更深入地研究了一上实体化视图(Materialized View), 接下来就要利用研究的所得去练习一下了, 想做什么呢? 利用实体化视图日志(Materialized View Log)来跟踪Oracle数据库中表的变化, 然后写Perl程序去将变化过的数据刷新到MySQL数据库中, 充分防照实体化视图增量刷新(Fast Refresh)的原理, 可以高效地实现这一功能, 足以应对一般的业务需求了. 下面强调最主要的几点:

1, 每一个表必需要有主键.
2, 用With Primary Key, Sequence选项创建实体化视图日志, 以支持增量刷新.
3, 在实化化视图日志上可以建一个CREATE_DATE列, 默认值SYSDATE.
4, 在实化化视图日志上为SEQUENCE$$列创建一个索引.
5, 现在只考虑简单的记录复制.

    Oracle的增量刷新有些小问题, 当实体化视图日志中有很多的记录时, 刷新过程很容易失败, 因此我在这儿对这个过程作些改进, 根据SEQUENCE$$的值来进行刷新, 每次最多刷新1000条记录, 小批量地做, 可以提高刷新频率.

    程序原型已经出来了, 要保证一次刷新过程的事务一致性, 是个难题, 因为没办法用DB-Link了, 所以正在思考要不要用分布式事务处理的编程. 你有什么建议和想法, 就回复吧!

留言 (7)

老兄, 你reinvent the wheel 了吧,大忌.

Oracle CDC (Change Data Capture)是专门开发用来作增量数据跟踪的,效率一定比MV log高.

I'm still working on CDC protype benchmark and proof of concept.

To zhu1, 你也不介绍一下, 或搞一个演示程序?

也没什么大忌的。我觉的挺好的。
mv log与cdc都可以用。
我有一种想法,目前市面上可以跨平台进行数据迁移的软件太少。除了exp/imp外,据我所知只有dsg的realsync可以做到。
而对业务要求较高的系统exp/imp不太现实,而realsync又较贵。所以我想组织写一个数据迁移软件。
d.c.b.a可以往这方面发展。

肯定很多公司想过的, 做成功比较难啊, 没什么简单的思路啊.

请再等一个月 很快.
接下来好几个Data Mart项目都会用到CDC,
现在临时用database trigger捕捉新更改数据.

最近忙着处理库存系统 将XML转换成relation data.
以满足每天100百万行的数据更新.

那你用CDC搞一个从Oracle复制到MySQL的演示先, 两个表的Delay不要很长. 看看是不是比较复杂.

请教一下:在数据同步时,CDC和LogMiner那种方法的实时性更高

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • It's Kate's.
  • 是凯特的.
  • Is that a car?
  • 那是一辆小汽车吗?
  • No, it isn't. It's a bus.
  • 不, 那是一辆公共汽车.
  • What do you call this in English?
  • 这个用英语怎么说?
  • What is the color of your new book?
  • 你的新书是什么颜色的?