sql - 两个表上的 Oracle DB 同步

标签 sql database oracle

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

为了实现这个要求,我计划有两个触发器。每当创建新订单时,首先在 ORDERS 表上触发以在 TASKS 表中插入一个新任务。每当 TASKS 表中的任务状态发生变化时,TASKS 表上的第二个触发器会更新 ORDERS 表中的订单状态。

我担心的是这个触发器解决方案只有在两个数据库启动时才有效。每当 DB1 关闭并且在 DB2 中创建新订单时,此解决方案无法在 DB1 中插入新任务。我认为我们可以在 DB1 中为 DB2 中的 ORDERS 表创建的 VIEW 上创建此触发器,而不是在 ORDERS 表上创建第一个触发器。这种在DB1中创建VIEW的解决方案解决了DB1宕机时在TASKS表中插入新TASK的问题。我认为这种在 TASKS 表上创建 View 以更改任务状态的解决方案不会起作用,因为 View 和表都在同一个 DB1 中。

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

最佳答案

触发器是解决此问题的有效方法。在现实中,dbs 可能多久发生一次故障。如上所述,高级排队可以用来解决这个问题。我假设您无法以这种方式控制数据库的创建。看起来它们应该在相同的架构中或至少针对相同的实例运行?

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

关于sql - 两个表上的 Oracle DB 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22838813/

相关文章:

具有特定顺序的 SQL ORDER BY,首先从特定单词开始,然后是升序

c# - 用户代码未处理未实现的异常

mysql - 简单的数据库设计问题

java - 如何将大量数据从数据库存储到 XML(速度问题,第三部分)?

sql - Oracle中过滤重复列

python - 如何使用 Python (pandas) 打开 SQL Server .mdf 文件

sql - 从 varchar 中删除额外的零

sql - 为什么这个非常简单的 SQL 查询在 MS Access 中失败?

javascript - 将数据库 ID 排序为垂直时间线

sql - oracle 对象和集合