我有一份工作,会提交其他工作。我已经设置了我的pl / sql过程来使用dbms_alert.register注册n个作业。每个作业都将发送一个dbms_alert.signal。我已经在信号发出后立即发出了一个提交。
问题是,当我的程序到达dbms_alert.waitany时,信号将不会被返回5秒(几乎每次都是这样)。该程序将提交另外n个工作,并且waitany将再次接收任何信号约5秒钟。
我完成了我的研究,并且已经看到dbms_alert.waitany的默认轮询间隔是5秒。可以使用dbms_alert.set_defaults过程更改此设置。我这样做没有效果。我已经用dbms_alert.set_defaults(1)(也试过600)尝试了我的代码,试图获得不到5秒的信号,但没有任何作用。
任何人都可以帮助我吗?
由于
答案 0 :(得分:0)
您正在寻找的是不推荐使用的初始化参数_job_queue_interval。它仍然可以用
设置 alter system set "_job_queue_interval"=5 scope=spfile;
...并重新启动数据库。
DBMS_ALERT.SET_DEFAULTS过程设置轮询间隔以防需要轮询循环(这是非常罕见的)。有关何时进行轮询(非常罕见),请参阅Oracle 10g docs。