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

Oracle高级队列与小型Oracle数据库表,oracle,updates,oracle12c,database-link,advanced-queuing,Oracle,Updates,Oracle12c,Database Link,Advanced Queuing,我正在寻找一种在两个数据库之间进行通信的简单方法,目前两个数据库之间存在一个数据库链接 我想在数据库1上处理一批记录(每批记录的批代码)的数据库1上的作业,一旦数据库1上的处理完成并且所有批记录都已处理完毕。我希望database 2通过查询oracle表或位于database 1或database 2上的oracle advanced queue来查看database 1已处理了大量批处理(批处理代码) 数据库2将使用每个批次代码通过数据库链接视图处理数据库1上的记录批次,并更新该批次的状态以

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

我想在数据库1上处理一批记录(每批记录的批代码)的数据库1上的作业,一旦数据库1上的处理完成并且所有批记录都已处理完毕。我希望database 2通过查询oracle表或位于database 1或database 2上的oracle advanced queue来查看database 1已处理了大量批处理(批处理代码)

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

我希望能够更新Oracle高级队列或数据库表的批次号、进度状态(“S”已启动、“C”已完成)、状态日期

表名。

batch_records
表列

Batch No,
Status,
status date
问题:

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

  • 可以通过数据库链接更新表吗

  • 有这样的例子吗


  • 首先回答您的问题:

  • 是的,我想是的
  • 是的,它可以。但是,如果涉及到很多行,则可能会非常慢
  • 大概

  • 数据库链接是两个数据库之间的通信方式。如果这些作业在数据库1(DB1)上运行,我建议您将其保留在数据库1中。通过数据库链接进行操作会引发不同类型的问题。可能会很慢,您无法通过数据库链接(例如LOB)完成所有操作。一个选项是调度作业(使用
    DBMS\u调度器
    DBMS\u作业
    (这对于简单的事情来说非常合适))。让过程在DB1中的某个表(第一个问题中的“简单表”)中维护作业状态,DB2将读取该表

    怎么做?直接执行此操作,或创建一个物化视图,该视图将按计划方式(例如每天早上7:00)或按需(这不是一个好主意)或按提交方式(一旦DB1过程完成任务并提交更改,物化视图将被刷新)


    如果没有那么多行,我可能会直接阅读DB1状态表,然后考虑其他选项(如果必要)。

    首先回答您的问题:

  • 是的,我想是的
  • 是的,它可以。但是,如果涉及到很多行,则可能会非常慢
  • 大概

  • 数据库链接是两个数据库之间的通信方式。如果这些作业在数据库1(DB1)上运行,我建议您将其保留在数据库1中。通过数据库链接进行操作会引发不同类型的问题。可能会很慢,您无法通过数据库链接(例如LOB)完成所有操作。一个选项是调度作业(使用
    DBMS\u调度器
    DBMS\u作业
    (这对于简单的事情来说非常合适))。让过程在DB1中的某个表(第一个问题中的“简单表”)中维护作业状态,DB2将读取该表

    怎么做?直接执行此操作,或创建一个物化视图,该视图将按计划方式(例如每天早上7:00)或按需(这不是一个好主意)或按提交方式(一旦DB1过程完成任务并提交更改,物化视图将被刷新)


    如果没有那么多行,我可能会直接阅读DB1状态表,然后再考虑其他选项(如果必要)。

    这太棒了,谢谢您提供的信息。。我将研究DBMS_调度程序和DBMS_作业。batch_表将很小,大约有2000个批号,并且在数据库2将记录处理到其数据库后的几天内会被清除。就像说这个工作每月只发生一次一样,不客气。嗯,是的-那是一张非常小的桌子,我想说,不需要任何特别的东西。回答得好@Littlefoot。根据链接更新:Oracle将向远程节点发送整个update语句,因此,如果是基于集合的更新,而不是每次行[=每次慢更新]更新,那么处理时间应该是正常的。感谢各位的反馈,这很好,感谢您提供的信息。。我将研究DBMS_调度程序和DBMS_作业。batch_表将很小,大约有2000个批号,并且在数据库2将记录处理到其数据库后的几天内会被清除。就像说这个工作每月只发生一次一样,不客气。嗯,是的-那是一张非常小的桌子,我想说,不需要任何特别的东西。回答得好@Littlefoot。根据链接更新:Oracle将向远程节点发送整个update语句,因此,如果它是基于集合的更新,而不是每次行[=slow-at-a-time]更新,那么处理时间应该是正常的。感谢各位的反馈