Oracle 高级队列与小型 Oracle 数据库 Table

Oracle Advanced Queues versus a Small Oracle Database Table

我正在寻找一种在两个数据库之间进行通信的简单方法,目前两个数据库之间存在一个数据库 link。

我想在数据库 1 上处理一批记录的作业(每批记录的批处理代码),一旦数据库 1 上的进程完成并且所有批次的记录都已处理。我希望数据库 2 通过查询 oracle table 或位于数据库 1 或数据库 2 上的 Oracle 高级队列来查看数据库 1 已经处理了许多批次(批次代码)。

数据库 2 将使用每个批代码通过数据库 linked 视图处理数据库 1 上的记录批次,并更新该批次的状态以完成。

我希望能够更新 Oracle Advanced Queue 或数据库 table 的批号、进度状态('S' 开始,'C' 完成),状态日期

Table姓名.

batch_records

Table 列

Batch No,
Status,
status date

问题:

  1. 可以通过简单的数据库 table 而不是复杂的 Oracle Advanced Queue 来完成吗?

  2. 能否通过数据库 link 更新 table?

  3. 有这样的例子吗?

先回答你的问题:

  1. 是的,我相信
  2. 是的,可以。但是,如果涉及很多行,它可能会很慢
  3. 可能

数据库link 两个数据库之间通信的方式。如果这些作业 运行 在数据库 1 (DB1) 上,我建议您将其保留在 DB1 中。在数据库 link 上做 stuff 需要不同类型的问题。可能会很慢,您不能对数据库 link(例如 LOB)执行 一切 。一种选择是安排工作(使用 DBMS_SCHEDULERDBMS_JOB(这对于简单的事情来说非常好))。让程序在 DB1 中的某些 table(即第一个问题中的 "simple table")中维护作业状态,DB2 将读取这些状态。

怎么样?直接执行,或创建一个物化视图,该视图将以预定方式(例如每天早上 07:00)或按需(不是那个好主意)或提交(一旦 DB1 过程完成工作并提交)刷新更改,实体化视图将被刷新)。

如果涉及的行不多,我可能会直接读取 DB1 状态 table,然后再考虑其他选项(如果需要)。