1

我有一份工作,它将提交 n 个其他工作。我已经设置了我的 pl/sql 程序来使用 dbms_alert.register 注册 n 个作业。这些作业中的每一个都将发送一个 dbms_alert.signal。我在信号发出后立即发出了提交。

这是问题所在,当我的程序到达 dbms_alert.waitany 时,将在 5 秒内返回非信号(几乎每次都是如此)。该过程将提交另外 n 个作业,并且再次等待大约 5 秒不会收到任何信号。

我进行了研究,发现 dbms_alert.waitany 的默认轮询间隔为 5 秒。这可以通过使用 dbms_alert.set_defaults 过程进行更改。我已经这样做了,但没有任何效果。我用 dbms_alert.set_defaults(1) 乱扔了我的代码(也尝试了 600),试图在不到 5 秒的时间内获得信号,但没有任何效果。

谁能帮我?

谢谢

4

1 回答 1

0

您正在寻找的是已弃用的初始化参数_job_queue_interval。它仍然可以设置为

alter system set "_job_queue_interval"=5 scope=spfile;

...并重新启动数据库。

DBMS_ALERT.SET_DEFAULTS 过程设置轮询间隔以防需要轮询循环(这种情况非常少见)。请参阅有关何时发生轮询的Oracle 10g 文档(这种情况非常少见)。

于 2011-04-26T12:33:37.783 回答