过去两年中断断续续地研究了一些Oracle日志文件的格式, 只是为了研究而开发了一个工具, 不具有任何实用的意义. 也比较清楚Quest Shareplex或DSG Realsync这样的软件的强大功能, 要做出这样的一个工具, 是非常难的, 也是非常耗时间的, 这是日志格式研究的终极目标. Oracle 11g的新Standby模式是很好, 不过那是在11g刚推出来的, 估计要到12X才能真正地广泛使用吧, 而且这么好的功能, Oracle不会不收许可证的值, 而且是相当地贵的.
Standby还是有缺限的, 不支持异构, 比如源结点是比较贵的小型机系统, 而目标结构想选择比较便宜的x86系统时, 就不可能了. 相反地, 基于日志文件分析的逻辑复制软件则要灵活得多, 不仅可以异构, 还可以灵活地折分数据.
在过去的一段时间中, 有钱的公司用Shareplex, 没有钱的公司则用了实体化视图日志或自已写触发器的方式, 来捕捉增量数据, 然后自已写角本来实现两边数据同步. 这种方式遇到的最大的题是维护复杂, 并且对源端的数据库影响较大. 对于Log格式的研究也有一段时间了, 最初研究8i/9i的, 后来花了一个星期的业余时间完成了10g的格式的研究, 因此11g或12x的格式也是可以出来的. 但是这个研究可以做到什么呢?
最现实的是可以通过分析日志来获得与实体化视图日志同样的数据, 这比分析所有数据要简单多了, 但是可以避免在源数据库上对要复制的表加上触发器或实体化视图日志, 要达到这样一个中间的产品或半成品, 则在看得见的时间范围之内.
正准备好好研究一下如何实现这个中间目标.
留言 (7)
错别字挺多的
呵呵
Posted by 学生 | Aug 24, 2007 9:17 AM
特色如此.
Posted by anysql | Aug 24, 2007 11:53 AM
我是觉得,如果要获得实体化视图的log一样的东西,还不如直接找到 rowid 就可以了,这样就非常简单。 然后去把数据抽取出来。
Posted by biti | Aug 24, 2007 5:11 PM
基于rowid的有很多限制, 如果在目标端记录了在源端的rowid, 则不能对源端的表作move操作. 如果不记录rowid, 则没有办法进行delete的得制和update pk列的复制.
要好好研究一下supplemental log data对于log的影响, 努力做到mview log with primary key一样的程度.
Posted by anysql | Aug 24, 2007 7:27 PM
主意应该不错的. 其实你可以考虑向DBA的方向上发展. 可以做一个回滚系统, 在一些表或者数据被误删除的时候, 你利用before image帮助恢复.
Posted by 过客 | Aug 24, 2007 7:33 PM
我现在的职业应当是DBA吧. 另外从回滚中恢复记录, oracle已经有flashback了.
Posted by anysql | Aug 24, 2007 8:33 PM
对于10g中,supplemental log data是记录在OP5.1中的,根据这个能生成REDO SQL。我有个Demo,与你的中间目标比较接近,对指定表进行抽取,生成REDO SQL,有机会大家一起研究一下
Posted by sun | Aug 30, 2007 8:52 PM