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
问题:
可以通过简单的数据库 table 而不是复杂的 Oracle Advanced Queue 来完成吗?
能否通过数据库 link 更新 table?
有这样的例子吗?
先回答你的问题:
- 是的,我相信
- 是的,可以。但是,如果涉及很多行,它可能会很慢
- 可能
数据库link 是两个数据库之间通信的方式。如果这些作业 运行 在数据库 1 (DB1) 上,我建议您将其保留在 DB1 中。在数据库 link 上做 stuff 需要不同类型的问题。可能会很慢,您不能对数据库 link(例如 LOB)执行 一切 。一种选择是安排工作(使用 DBMS_SCHEDULER
或 DBMS_JOB
(这对于简单的事情来说非常好))。让程序在 DB1 中的某些 table(即第一个问题中的 "simple table")中维护作业状态,DB2 将读取这些状态。
怎么样?直接执行,或创建一个物化视图,该视图将以预定方式(例如每天早上 07:00)或按需(不是那个好主意)或提交(一旦 DB1 过程完成工作并提交)刷新更改,实体化视图将被刷新)。
如果涉及的行不多,我可能会直接读取 DB1 状态 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
问题:
可以通过简单的数据库 table 而不是复杂的 Oracle Advanced Queue 来完成吗?
能否通过数据库 link 更新 table?
有这样的例子吗?
先回答你的问题:
- 是的,我相信
- 是的,可以。但是,如果涉及很多行,它可能会很慢
- 可能
数据库link 是两个数据库之间通信的方式。如果这些作业 运行 在数据库 1 (DB1) 上,我建议您将其保留在 DB1 中。在数据库 link 上做 stuff 需要不同类型的问题。可能会很慢,您不能对数据库 link(例如 LOB)执行 一切 。一种选择是安排工作(使用 DBMS_SCHEDULER
或 DBMS_JOB
(这对于简单的事情来说非常好))。让程序在 DB1 中的某些 table(即第一个问题中的 "simple table")中维护作业状态,DB2 将读取这些状态。
怎么样?直接执行,或创建一个物化视图,该视图将以预定方式(例如每天早上 07:00)或按需(不是那个好主意)或提交(一旦 DB1 过程完成工作并提交)刷新更改,实体化视图将被刷新)。
如果涉及的行不多,我可能会直接读取 DB1 状态 table,然后再考虑其他选项(如果需要)。