【发布时间】:2011-03-09 19:41:37
【问题描述】:
我有一份工作,它将提交 n 个其他工作。我已经设置了我的 pl/sql 程序来使用 dbms_alert.register 注册 n 个作业。这些作业中的每一个都将发送一个 dbms_alert.signal。我在信号发出后立即发出了提交。
这是问题所在,当我的程序到达 dbms_alert.waitany 时,将在 5 秒内返回 not 信号(几乎每次都是如此)。该过程将提交另外 n 个作业,并且再次等待大约 5 秒不会收到任何信号。
我进行了研究,发现 dbms_alert.waitany 的默认轮询间隔为 5 秒。这可以通过使用 dbms_alert.set_defaults 过程进行更改。我已经这样做了,但没有任何效果。我用 dbms_alert.set_defaults(1) 乱扔了我的代码(也尝试了 600),试图在 5 秒内获得信号,但没有任何效果。
谁能帮帮我?
谢谢
【问题讨论】:
-
我认为,您只需要在致电
waitany之前致电set_defaults。在线文档和其他来源对此过程非常不清楚 - “灵敏度”参数是以秒为单位还是以 hsecs 为单位不清楚。 -
另见:“WAITANY 调用使用轮询循环来检测警报。...轮询循环以 1 秒的间隔开始,并以指数方式增加到 30 秒。” - 没有提到 set_defaults。
标签: oracle asynchronous plsql jobs