2011-03-09 43 views
1

我有一份工作,將提交其他工作。我已經安裝了我的pl/sql過程,以使用dbms_alert.register註冊n個作業。這些作業中的每一個都會發送一個dbms_alert.signal。信號後我立即發佈了一個提交。Oracle DBMS_ALERT Waitany延遲

這是問題所在,當我的程序到達dbms_alert.waitany時,沒有信號會被返回5秒(幾乎每次都會很快)。該程序將提交另外n個工作,並再次等待約5秒鐘不會接收任何信號。

我已經完成了我的研究,並且已經看到dbms_alert.waitany的默認輪詢時間間隔爲5秒。這可以通過使用dbms_alert.set_defaults過程來更改。我已經做到了,沒有任何效果。我用dbms_alert.set_defaults(1)散佈了我的代碼(也嘗試過600),試圖讓信號少於5秒,但沒有任何效果。

任何人都可以幫助我嗎?

感謝

+0

我想你應該只需要在給'waitany'打電話之前調用'set_defaults'。在線文檔和其他來源對此過程相當不清楚 - 「敏感度」參數是以秒還是hsecs表示還不清楚。 –

+0

也看到:「WAITANY呼叫使用輪詢循環來檢測警報......輪詢循環以1秒間隔開始,指數增加到30秒。」 - 沒有提及set_defaults。 –

回答

0

什麼你要找的是不推薦使用的初始化參數_job_queue_interval。它仍然可以用

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

...設置並重新啓動數據庫。

如果需要輪詢循環(這非常少見),DBMS_ALERT.SET_DEFAULTS過程設置輪詢間隔。有關何時發生輪詢(這是非常罕見的),請參閱Oracle 10g docs