我需要从客户端应用程序执行某个Oracle过程,它通常需要更长的时间,并且无法真正增加响应的等待时间,因为执行时间是不可预测的!
有没有办法在运行时异步执行该过程作为调度程序作业?
如果异步执行“Oracle AQ Asynchronous Notification”会用于通知应用程序吗?
答案 0 :(得分:2)
您可以使用dbms_scheduler
包(或较旧的dbms_job
包)以异步方式在单独的会话中运行过程。根据您预计运行的作业数量(以及您希望应用程序写入某种作业队列的后台作业数量,以及固定数量的后台作业从中读取并处理工作。这就是作业queue"可以是实际的Oracle AQ队列,也可以是作业读取的常规表。
您可以让该过程使用Oracle AQ向客户端发送消息。但是,在我看到这种设置的99%的时间里,作业为表格写了某种状态(或者只是使用了dbms_scheduler
数据字典),而前端仅仅调查了定期状态以确定作业何时完成。