2

我有两个 PL/SQL 系统,驻留在两个独立的数据库中。SystemA 将需要填充 SystemB 的表。这可能会通过数据链路完成。每次在 SystemB 的表中插入一组记录时,必须运行 SystemB 中的进程。我可以等待 SystemA 完成,然后运行脚本以开始在 SystemB 中处理,但由于 SystemA 可能会花费数小时处理然后填充 SystemB,我宁愿 SystemB 在每组记录可用时立即处理它们(每个set 可以独立于其他人进行处理,因此应该可以正常工作)。

我不确定如何在 PL/SQL 中进行偶数驱动编程。我需要 SystemA 通知 SystemB 一组已准备好进行处理。我的第一个想法是在 SystemB 中有一个特殊的“事件”表,然后当 SystemA 完成一个集合时,它会插入到“事件”表中,并且插入时有一个触发器启动该过程(并且该过程可能很长,每个进程可能需要 5-10 分钟)在 SystemB 中。我对 Oracle 中的触发器没有足够的经验来知道这是否是一种既定的方法,或者是否有更好的机制。建议?提示?建议?

4

2 回答 2

6

使用 Oracle 高级队列;它是为此而设计的。我相信您仍然需要在两个系统之间建立一个数据库链接(在这种情况下从 B 到 A,以使用 A 上的队列)。

于 2011-02-16T19:26:01.977 回答
2

是的,Oracle 高级队列甚至让 A 向 B 提交一个古老的 Oracle 作业会是一个更好的主意。

而且,如果您的流程需要将数据从 A 完全复制到 B,那么您可能希望看起来像 Oracle Streams 流程来复制数据然后进行处理。

于 2011-02-16T19:39:33.990 回答