我有两个PL/SQL系统,驻留在两个独立的数据库中。SystemA将需要填充系统B的表。这可能是通过数据链路完成的。每次在SystemB的表中插入一组记录时,SystemB中的一个进程都必须运行。我可以等待SystemA完成,然后运行脚本在SystemB中开始处理,但是由于SystemA可能需要花费很多小时来处理然后填充SystemB,所以我更希望SystemB在每组记录可用时立即处理它们(每组记录都可以独立处理,所以这应该可以正常工作)。
我不确定的是如何在PL/SQL中进行事件驱动编程。我需要SystemA通知SystemB一个集合已经准备好处理了。我的第一个想法是在SystemB中有一个特殊的“事件”表,然后当SystemA完成一个集合时,它插入到“事件”表中,并在插入时有一个触发器启动SystemB中的进程(该进程可能很长,每个进程可能需要5-10分钟)。我对Oracle中的触发器没有足够的经验,不知道这是不是一种既定的方法,或者是否有更好的机制。有什么建议吗?小贴士?建议?
发布于 2011-02-17 03:26:02
使用Oracle高级队列;它就是为此而设计的。我相信您仍然需要在两个系统之间建立一个数据库链接(在本例中是从B到A,以使用A上的队列)。
发布于 2011-02-17 03:39:34
是的,Oracle高级队列或者甚至让A向B提交一个受人尊敬的Oracle作业将是一个更好的想法。
而且,如果您的进程需要将数据从A完全复制到B,那么您可能希望看起来像Oracle Streams进程,以复制数据,然后执行处理。
https://stackoverflow.com/questions/5021088
复制相似问题