两个表上的Oracle DB同步

时间:2014-04-03 13:11:35

标签: sql database oracle

我有两个oracle 11g数据库。我在DB1(在模式中)有一个表TASKS,在DB2中有一个表ORDERS(在模式中)。每当在ORDERS表中创建一个带有(OrderID和OrderStatus)的新订单时,我需要在TASKS表中创建一个新任务(TaskID为Or​​derID,TaskStatus为OrderStatus)。当用户在TASKS表中更新TaskStatus时,ORDERS表中订单状态的订单状态应该更新。我在DB1中创建了一个DBLink来访问DB2中的ORDER表。

为了实现这个要求我计划有两个触发器。首先触发ORDERS表,以便在创建新订单时在TASKS表中插入新任务。 TASKS表上的第二个触发器,用于在TASKS表中发生任务状态更改时更新ORDERS表中的Order Status。

我关注的是这个触发解决方案只有在两个DB启动时才有效。每当DB1关闭并且在DB2中创建新订单时,此解决方案无法在DB1中插入新任务。我认为不是在ORDERS表上创建First触发器,而是在DB1中为DB2中的ORDERS表创建的VIEW上创建此触发器。这种在DB1中创建VIEW的解决方案解决了当DB1关闭时在TASKS表中插入新TASK的问题。我认为这种在任务状态更改的TASKS表上创建视图的解决方案将不起作用,因为视图和表都在同一个DB1中。

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

1 个答案:

答案 0 :(得分:0)

触发器是解决此问题的有效方法。实际上dbs多久可能会失效。如上所述,可以使用高级排队来解决这个问题。我假设您无法以这种方式控制数据库的创建。它们似乎应该在同一个模式中,或者至少针对同一个实例运行?

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