I asked a question earlier about whether DBMS_ALERT works on the RAC. The answer was yes, and I have set up a VMWare test environment and confirmed it.
However, there seems to be a long delay between when the SIGNAL() call is made and the WAITONE() returns when they are different boxes.
My tests are the same as found on http://vitspinka.blogspot.com/2008/04/dbmsalert-on-rac.html
If I run the WAIT script on my RAC2 box, then SIGNAL on RAC1, the triggering can happen anywhere from 0.5 to 5 seconds later.
Strangely, if multiple WAIT scripts running simultaneously on RAC2, then SIGNAL on RAC1, the WAIT scripts do not all trigger simultaneously. They vary between 0.5 to 5 seconds.
Does anyone know of any tuning parameters or any details of how DBMS_ALERT works that can help with this?
I'm using Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi.
Problem solved.
A bright spark here noticed that in the logs the time between waiting for a signal and triggering, was always multiple of 5. This is due to the DBMS_ALERT.Wait methods using polling when in shared mode (which is what a RAC remote database instance is). Although the oracle documentation says the polling time is 1 second, it is actually 5 seconds.
Using DBMS_ALERT.SET_DEFAULT(1) reduced the time to 1 second max.
Good enough.