两个表上的 Oracle DB 同步



我有两个oracle 11g数据库。我在 DB1 中有一个表任务(在模式中),在 DB2 中(在模式中)中有一个表 ORDERS。每当在订单表中创建带有(订单ID和订单状态)的新订单时,我都需要在任务表中创建一个新任务(任务ID作为订单ID,任务状态为订单状态)。当用户更新"任务"表中的"任务状态"时,应更新其在"订单"表中的订单状态。我在 DB1 中创建了一个 DBLink 来访问 DB2 中的 ORDER 表。

为了实现此要求,我计划有两个触发器。每当创建新订单时,ORDERS 表上的第一个触发器在 TASKS 表中插入新任务。任务表上的第二个触发器,用于在任务表中的任务状态发生更改时更新订单表中的订单状态。

我担心的是,此触发器解决方案仅在两个数据库启动时才有效。每当 DB1 关闭并在 DB2 中创建新订单时,此解决方案都无法在 DB1 中插入新任务。我认为与其在 ORDERS 表上创建第一个触发器,不如在 DB2 中的 DB1 for ORDERS 表中创建的视图上创建此触发器。这种在 DB1 中创建 VIEW 的解决方案解决了在 DB1 关闭时在 TASKS 表中插入新任务的问题。我认为这种在 TASKS 表上为任务状态更改创建视图的解决方案将不起作用,因为视图和表都在同一个 DB1 中。

没有更好的方法来解决这个问题?请帮忙。

触发器

是此问题的有效解决方案。数据库在现实中可能多久下降一次。如上所述,高级队列可用于解决此问题。我假设您无法以这种方式控制数据库的创建。似乎它们应该在同一个架构中或至少针对同一个实例运行?

http://docs.oracle.com/cd/B10501_01/appdev.920/a96587/qintro.htm

最新更新