Ранее я задавал вопрос о том, работает ли DBMS_ALERT на RAC. Ответ был положительным, и я настроил тестовую среду VMWare и подтвердил это.
Однако, похоже, существует большая задержка между вызовом SIGNAL () и возвратом WAITONE (), когда они находятся в разных полях.
Мои тесты такие же, как на http://vitspinka.blogspot.com/2008/04/dbmsalert-on-rac.html
Если я запустил сценарий WAIT на моем RAC2-боксе, а затем SIGNAL на RAC1, запуск может произойти где-нибудь на 0,5–5 секунд позже.
Как ни странно, если несколько сценариев WAIT работают одновременно на RAC2, а затем SIGNAL на RAC1, сценарии WAIT не запускаются одновременно. Они варьируются от 0,5 до 5 секунд.
Кто-нибудь знает какие-либо параметры настройки или какие-либо подробности того, как работает DBMS_ALERT, которые могут помочь с этим?
Я использую Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi.
Задача решена.
Яркая искра здесь заметила, что в журналах время между ожиданием сигнала и запуском всегда было кратным 5. Это связано с методами DBMS_ALERT.Wait, использующими опрос в общем режиме (что и является экземпляром удаленной базы данных RAC. ). Хотя в документации Oracle указано, что время опроса составляет 1 секунду, на самом деле это 5 секунд.
Использование DBMS_ALERT.SET_DEFAULT (1) сократило время до 1 секунды максимум.
Достаточно хорошо.