我正在寻找一种在两个数据库之间进行通信的简单方法,目前两个数据库之间存在数据库链接。
我想在数据库 1 上处理一批记录(每批记录的批处理代码(上的作业,一旦数据库 1 上的处理完成并且所有记录批次都已处理完毕。我希望数据库 2 通过查询位于数据库 1 或数据库 2 上的 Oracle 表或 Oracle 高级队列来查看数据库 1 已处理了许多批次(批处理代码(。
数据库2 将使用每个批处理代码通过数据库链接视图处理数据库 1 上的记录批次,并更新该批次的状态以完成。
我希望能够更新 Oracle 高级队列或数据库表的批号、进度状态("S"已开始,"C"已完成(、状态日期
表名。
batch_records
表列
Batch No,
Status,
status date
问题:
这可以通过简单的数据库表而不是复杂的 Oracle 高级队列来完成吗?
可以通过数据库链接更新表吗?
有没有这样的例子?
首先回答您的问题:
是的- ,我相信是的
- 是的,可以。但是,如果涉及许多行,则可能会很慢
- 可能
链接是在两个数据库之间进行通信的方式。如果这些作业在数据库 1 (DB1( 上运行,我建议您将其保留在 DB1 中。通过数据库链接执行操作需要不同类型的问题。可能很慢,无法通过数据库链接(例如 LOB(执行所有操作。一种选择是安排作业(使用DBMS_SCHEDULER
或DBMS_JOB
(这对于简单的事情来说是完全可以的((。让该过程在 DB1 中的某个表(这将是第一个问题中的"简单表"(中维护作业状态,该表将由 DB2 读取。
如何?直接执行此操作,或者创建一个物化视图,该视图将以计划的方式(例如,每天早上 07:00(或按需刷新(不是那个好主意(或在提交时刷新(一旦 DB1 过程完成作业并提交更改,将刷新物化视图(。
如果不涉及那么多行,我可能会直接读取 DB1 状态表,并在以后考虑其他选项(如有必要(。