DBMS_ALERT медленно запускается на RAC
Ранее я задавал вопрос о том, работает ли 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.
1 ответ
Задача решена.
Яркая искра здесь заметила, что в журналах время между ожиданием сигнала и срабатыванием всегда было кратно 5. Это связано с тем, что методы DBMS_ALERT.Wait используют опрос в режиме совместного использования (что и является экземпляром удаленной базы данных RAC).). Хотя в документации оракула говорится, что время опроса составляет 1 секунду, на самом деле это 5 секунд.
Использование DBMS_ALERT.SET_DEFAULT(1) уменьшило время до 1 секунды макс.
Достаточно хорошо.