0

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

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

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

我希望能够更新其批号、进度状态('S' 开始、'C' 完成)、状态日期的 Oracle 高级队列或数据库表

表名。

batch_records

表格列

Batch No,
Status,
status date

问题:

  1. 这可以通过一个简单的数据库表而不是复杂的 Oracle 高级队列来完成吗?

  2. 可以通过数据库链接更新表吗?

  3. 有这方面的例子吗?

4

1 回答 1

2

先回答你的问题:

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

数据库链接两个数据库之间进行通信的方式。如果这些作业在数据库 1 (DB1) 上运行,我建议您将其保留在那里 - 在 DB1 中。通过数据库链接做事需要不同类型的问题。可能会很慢,您无法通过数据库链接(例如 LOB)完成所有操作。一种选择是安排作业(使用DBMS_SCHEDULERDBMS_JOB(对于简单的事情来说这很不错))。让该过程在 DB1 中的某个表(这将是您的第一个问题中的“简单表”)中维护作业状态,该表将由 DB2 读取。

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

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

于 2020-01-31T10:23:59.090 回答