DBMS_ALERT在RAC上触发缓慢

之前我问过一个关于DBMS_ALERT是否在RAC上工作的问题。 答案是肯定的,我已经build立了一个VMWaretesting环境并进行了确认。

但是,SIGNAL()调用和WAITONE()在不同的盒子之间返回时,似乎有很长的延迟。

我的testing与http://vitspinka.blogspot.com/2008/04/dbmsalert-on-rac.html上的testing相同

如果我在RAC2框上运行WAIT脚本,然后在RAC1上运行SIGNAL,触发可能会在0.5到5秒之后发生。

奇怪的是,如果在RAC2上同时运行多个WAIT脚本,则在RAC1上SIGNAL,WAIT脚本不会同时触发。 他们在0.5到5秒之间变化。

有谁知道任何调整参数或DBMS_ALERT如何工作,可以帮助这个任何细节?

我正在使用Oracle数据库10g企业版版本10.2.0.4.0 – 64bi。

问题解决了。

一个明亮的火花在这里注意到,在日志中,等待信号和触发之间的时间总是5的倍数。这是由于DBMS_ALERT.Wait方法在共享模式下使用轮询(这是RAC远程数据库实例是)。 虽然oracle文档说轮询时间是1秒,但实际上是5秒。

使用DBMS_ALERT.SET_DEFAULT(1)将时间减less到最大1秒。

够好了。