Параметр Oracle AQ_TM_PROCESSES в очередях сообщений контролирует мониторинг времени и обработку сообщений с задержкой и заданным сроком действия. Он может принимать значение от 0 до 10. Установка параметра AQ_TM_PROCESSES в ноль отключает Queue Monitor Coordinator, что, как написано в документации Oracle, приведет к серьезным проблемам в работе Oracle Streams. Но даже значение отличное от нуля может привести к проблемам. У моего заказчика при AQ_TM_PROCESSES = 1 трейс-файлы начали "распухать" от сообщений "Streams AQ: waiting for messages in the queue".
В Oracle 10g был добавлен режим автонастройки Queue Monitor Coordinator. Для его включения параметр AQ_TM_PROCESSES должен быть пустым. Oracle настоятельно рекомендует, что бы параметр AQ_TM_PROCESSES оставался пустым.
Как проверить значение AQ_TM_PROCESSES?
Запрос "select value from v$parameter where name = 'aq_tm_processes'" не позволяет проверить параметр AQ_TM_PROCESSES, т.к. даже если он пустой (т.е. включен режим автонастройки), то запрос к v$parameter всеравно вернет ноль. Поэтому для его проверки можно использовать следующий скрипт:
Попытка очистить значение параметра AQ_TM_PROCESSES в Oracle Enterprise Manager Console приводит к ошибке: "Applying dynamic parameter(s) failed. ORA-02017: integer value required". Т.к. по умолчанию AQ_TM_PROCESSES является пустым, то просто сбросим параметр AQ_TM_PROCESSES в значение по умолчанию выполнив комманду:
P.S. Да прибудут с вами грамотно настроенные сервера баз данных!
В Oracle 10g был добавлен режим автонастройки Queue Monitor Coordinator. Для его включения параметр AQ_TM_PROCESSES должен быть пустым. Oracle настоятельно рекомендует, что бы параметр AQ_TM_PROCESSES оставался пустым.
Как проверить значение AQ_TM_PROCESSES?
Запрос "select value from v$parameter where name = 'aq_tm_processes'" не позволяет проверить параметр AQ_TM_PROCESSES, т.к. даже если он пустой (т.е. включен режим автонастройки), то запрос к v$parameter всеравно вернет ноль. Поэтому для его проверки можно использовать следующий скрипт:
declareКак в AQ_TM_PROCESSES установить пустое значение?
aq_tm_processes pls_integer;
begin
select value
into aq_tm_processes
from v$parameter
where name = 'aq_tm_processes';
if aq_tm_processes = 0 then
select 0
into aq_tm_processes
from v$parameter
where name = 'aq_tm_processes'
and (isDefault = 'FALSE' or isModified <> 'FALSE');
end if;
dbms_output.put_line('AQ_TM_PROCESSES = ' || aq_tm_processes);
exception
when no_data_found then
dbms_output.put_line('AQ_TM_PROCESSES is empty');
end;
Попытка очистить значение параметра AQ_TM_PROCESSES в Oracle Enterprise Manager Console приводит к ошибке: "Applying dynamic parameter(s) failed. ORA-02017: integer value required". Т.к. по умолчанию AQ_TM_PROCESSES является пустым, то просто сбросим параметр AQ_TM_PROCESSES в значение по умолчанию выполнив комманду:
ALTER SYSTEM RESET AQ_TM_PROCESSES SCOPE=SPFILE SID='*';Сброс параметра AQ_TM_PROCESSES в значение по умолчанию избавил трейс-файлы моего заказчика от сообщений "Streams AQ: waiting for messages in the queue". Хотя может это совпадение...
P.S. Да прибудут с вами грамотно настроенные сервера баз данных!
Комментариев нет:
Отправить комментарий