现在用了快照形式,每隔一段时间(若干小时)就向另外一台机器发送消息,同时通过发送变化的内容,去更新另外一太机器的数据库内容。
请问各位大侠,如何知道数据库变化的内容,并且组织这些内容呢?通过日志吗?那该如何做?
先谢谢大家了!~

解决方案 »

  1.   

    不知道oracle那有没有这个概念:-$
      

  2.   

    谢谢 czhai(横扫千军) ,大家还又没有办法?
      

  3.   

    可以用Oracle的高级复制来同步变化。
      

  4.   

    如果想自己编程实现Oracle的高级复制呢?
      

  5.   

    ORACLE实现数据复制是基于DML的日志文件实现的,是否可以考虑基于数据变化
    的数据复制呢? 基本方法在需要复制的数据表中增加两个字段,一个是逻辑删除
    标志,一个是时间戳,前者表示本记录已被删除,但仅是逻辑上删除,至于物理删除
    可以在适当时候进行批处理,之所以这样,以确保复制方知道该记录已被删除,
    时间戳字段说明该记录修改的时间,当然怎样设置该值,必须精心考虑.该复制方法
    是按一定预设时间周期性将上次复制时间戳值之后发生的记录数据按关键字覆盖
    与远程数据库服务器中相应的数据记录,当然新增记录同样会新增插入.于是实现
    数据同步.这样本人只是简单描述目前正研究的一种数据同步方法.其实真正实现它,
    确需很大精力,若有兴趣,可与本人共同探讨.E-MAIL:[email protected]
      

  6.   

    可以用高级复制中的master to master,写个脚本来实现多简单呀
      

  7.   

    高級復制不是你去編程實現的。
    oracle自己來完成,你做的是進行設置。
    搜索:高級復制。
    我以前參預一個項目就成功地使用了高級復制來實現數據同步。
      

  8.   

    jiezhi(浪子) 有高级复制的更多资料吗?
      

  9.   

    Oracle高级复制  在开始之前,需要简单说明一下,目前公司有几个项目都采用Oracle作为数据库平台,并且有的项目使用到了Oracle的数据库复制技术,其中也遇到了一些问题,因此在这里,我对Oracle的复制技术谈一下我个人的理解,希望能够对采用Oracle数据库的项目组有所帮助。其中在文中使用到的SQL脚本都是经过检验可以运行的。
      首先简单介绍和数据库复制有关的基本概念,然后探讨Oracle数据复制技术中的几个重要模型,最后介绍Oracle的数据复制管理器以及如何利用它来配置和维护复制环境。
      在文章的开头,我想首先简单谈一下复制的基本概念,也就是什么是复制?复制简单地说就是在由两个或者多个数据库系统构成的一个分布式数据库环境中拷贝数据的过程。Oracle高级复制,也称为对称复制,第一次是在Oracle 7.1.6版本中出现的,在这之前的Oracle版本中,Oracle数据复制方法仅有只读快照形式的基本复制一种方法。随着Oracle版本的每一次升级,数据复制的功能、管理以及速度等方面都得到了很大的改进和完善。目前,由于对分布式数据环境需求的不断增长,越来越多的应用提出了数据复制的需求。
    1.基本概念
    1. 分布式数据库技术
    分布式数据库技术是目前我们经常提及的分布式计算的一个重要组成部分,该技术允许数据在多个服务器端共享。采用分布式数据库技术,一个本地服务器可以存取不同物理地点的远程服务器上的数据;也可以使所有的服务器均可以持有数据的拷贝/复制,这样分布式系统中的所有服务器均可进行本地存取。
    设计一个分布式计算解决方案首先需要考虑的问题就是应用的完整性、复杂性、性能和可用性以及响应时间等,同时还需要考虑的是对于不同的应用需求是采用实时存取远程数据还是采用延迟存取远程数据。这对于数据复制来讲就是采取实时更新复制方案还是延迟数据复制方案。
    2. 同步和异步的概念
    同步分发数据库技术是一种实时远程存取和实时更新数据的技术。这种技术可以保证应用的完整性降低了应用的复杂性,但是如果系统存在网络存取速度很慢这样的问题,相应响应时间就会很慢。
    异步分发数据库技术是一种延迟远程存取和延迟传播对数据更新的技术。这种技术具有很高的可用性和很短的响应时间。相比同步分发数据库技术就显得复杂一些,为了确保应用的完整性需要仔细考虑和设计。
    对于实际的商业问题,必须权衡这两种技术的利弊最终选择最佳的解决方案,有些问题选用同步技术比较适合,也有一些问题采用异步技术是比较好的解决方案,还有一些问题必须综合这两种技术。
    3. 复制的概念
    复制,顾名思义就是将数据库中的数据拷贝到不同物理地点的数据库中以支持分布式应用,它是整个分布式计算解决方案的一个重要组成部分。上面介绍了同步和异步的概念,这里针对复制也存在同步复制和异步复制的问题。
    同步复制,复制数据在任何时间在任何复制节点均保持一致。如果复制环境中的任何一个节点的复制数据发生了更新操作,这种变化会立刻反映到其他所有的复制节点。这种技术适用于那些对于实时性要求较高的商业应用中。
    异步复制,所有复制节点的数据在一定时间内是不同步的。如果复制环境中的其中的一个节点的复制数据发生了更新操作,这种改变将在不同的事务中被传播和应用到其他所有复制节点。这些不同的事务间可以间隔几秒,几分种,几小时,也可以是几天之后。复制节点之间的数据临时是不同步的,但传播最终将保证所有复制节点间的数据一致。
    4. 更新冲突
    在异步复制环境中,对于所有应用最关键的就是要确保数据的一致性。我们来看下面这种情况会有什么后果发生呢?在同一时间对同一个表的同一行数据的同一列在两个不同的地点作更新。这种情况就会发生称之为更新冲突的错误。为保证数据的一致性,更新冲突必须被检测到并且处理以确保在不同地点的数据元素保持同样的值。更新冲突可以通过限制"所有权" 到单一节点或者将更新某个特定数据元素的权利限制到某一具体节点的方法来避免。
    2.Oracle数据复制应用模型
    为确保实际应用数据的一致性,必须在异步复制应用模型中考虑冲突避免或者冲突检测和消除的方法。例如,对于一个实际商业应用,首先必须在逻辑上了解该商业应用采取的冲突避免方法和在某个节点有那些数据以及这些数据中那些是可更新的,而那些又是不可更新的。在下面的这一部分中,我们首先将详细讨论两种常用的冲突避免方法:主站点所有权模型和动态所有权模型。然后,讨论共享所有权模型以及这种模型引起的冲突检测和处理问题,最后,讨论针对Fail-over的复制配置,这种复制方案同时考虑了冲突避免和冲突检测与消除两种情况。