oracle中的异步操作
无论如何,有人可以在 oracle 中运行异步操作吗?
这是我的情况: 我有一个昂贵的进程(假设运行需要 30 分钟)。我有一个基于网络的前端来控制这个过程的运行时间。我正在寻找从前端触发 proc 的运行,而不是真正等待 proc 完成。即,控件应该返回到 Web 应用程序,状态为“正在进行”。 我专门寻找一种机制,可以将控制权交还给前端,而无需等待过程完成执行。
预先感谢,
SK
Is there anyway one can run async operations in oracle.
Here is my situation:
I have an expensive proc (say it takes 30 mins to run). I have a web-based front-end that controls when this proc to run. I am looking for triggering the running of the proc from the front-end, and not really wait for the proc to complete.i.e., the control should come back to the web application, with a status like say "In progress".
I am specifically looking for a mechanism to get control back to the front-end without waiting for the proc to complete execution.
Thanks in advance,
SK
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我赞同 OMG Ponies 要求提供更多细节的要求。
根据您想要完成的任务,您可能需要查看 DBMS_JOBS 包。这允许您向异步运行的数据库提交作业。例如,如果您希望数据库执行一些计算成本较高的操作来响应 GUI,您的前端可以执行类似的操作,
这将提交一个后台作业来运行 SOME_EXPENSIVE_PROCEDURE,并传入 P_SOME_PARAMETER。在底层事务提交之前,该作业不会启动,如果 SOME_EXPENSIVE_PROCEDURE 执行一些无法回滚的操作(例如发送电子邮件或 FTP 传输文件),则效果非常好。
I'd second OMG Ponies's request for more specifics.
Depending on what you are trying to accomplish, you may want to look into the DBMS_JOBS package. That allows you to submit a job to the database that runs asynchronously. If you want the database to do something computationally expensive in response to a GUI, for example, your front end could execute something like
That would submit a background job to run SOME_EXPENSIVE_PROCEDURE, passing in P_SOME_PARAMETER. The job would not start until the underlying transaction commits which is excellent if SOME_EXPENSIVE_PROCEDURE does something that cannot be rolled back like sending email or FTP-ing a file.