DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Определение количества диспетчеров

Как вы только что видели, количество диспетчеров, запускаемых вместе с экземпляром, определяется значением атрибута dispatchers. Это минимальное количество диспетчеров, когда-либо запускаемых для данного экземпляра. Следовательно, если запустить с самого начала слишком много диспетчеров, то ресурсы будут расходоваться неэффективно, поскольку лишние диспетчеры нельзя удалить без останова экземпляра. С другой стороны, если первоначально запущенных диспетчеров окажется недостаточно для обслуживания поступающих запросов, то вам практически сразу же придется запускать дополнительные, что неизбежно скажется на производительности. Для увеличения количества диспетчеров необходимо явно изменить значение соответствующего параметра с помощью команды alter system. Увеличивать количество диспетчеров можно вплоть до той величины, которая задана параметром mts_max_ dispatchers.
Чтобы правильно выбрать значение атрибута dispatchers, необходимо принять во внимание следующее:
Ограничение операционной системы на количество соединений, устанавливаемых с каждым процессом
Требуемую производительность базы данных
Ожидаемое количество соединений по каждому сетевому протоколу
Внимание
Корпорация Oracle настоятельно рекомендует, чтобы в среде Windows NT количество соединений с одним диспетчером не превышало 1000. Это намного больше, чем было в предыдущих версиях.
Определив, какое ограничение накладывает операционная система, можно воспользоваться приведенной ниже формулой, чтобы подсчитать начальное количество диспетчеров, запускаемых для каждого сетевого протокола.
количество диспетчеров = се11(максимальное количество параллельных сеансов / количество соединений на один диспетчер)
Обозначение ceil показывает, что вы должны взять частное от деления ожидаемого максимального количества параллельных сеансов на количество соединений с одним диспетчером и округлить его в большую сторону. Допустим, что вы ожидаете до 5000 параллельных сеансов с использованием протокола TCP/IP. Каждый процесс может поддерживать до 1500 соединений TCP/IP. Предположим также, что у вас будет 3000 параллельных сеансов с использованием SPX, и каждый процесс может поддерживать до   1000 соединений SPX.  Используя приведенную выше формулу, получаем
количество диспетчеров для TCP/IP = ceil(5000/1500) = ceil(3.33333) = 4
Для протокола SPX аналогичный расчет даст значение 3. Таким образом, в файле init.ora нужно указать следующее:
mts_dispatchers="(protocol=TCP)(dispatchers=4)(connections=1500)" mts_dispatchers="(protocol=SPX)(dispatchers=3)(connections=1000)"
В зависимости от того, какая производительность будет получена с этими значениями, может потребоваться дополнительная коррекция числа диспетчеров. Кроме того, с течением времени исходные данные для расчетов могут измениться, поэтому вам нужно периодически проверять, действительны ли еще используемые значения или их требуется скорректировать. Подробнее о настройке многопоточного сервера можно прочитать в главе 21 руководства Oracle St Designing and Tuningfor Performance Release 2 (8.1.6) входящего в пакет электронной документации Oracle.
При указании адресов диспетчеров существуют два варианта. Можно назначить всем диспетчерам один IP-адрес, задав его в параметре как показано ниже, mts_dispatchers="(address=(protocol=TCP)(host=198.254.38.17))(clispatchers=4)", или назначить каждому диспетчеру (или группе диспетчеров) отдельный порт. При этом необходимо использовать соседние номера портов. Вот пример, поясняющий сказанное:
mts_dispatchers="(address=(protocol=TCP)(host=198.254.38.17)(port=6100)) dispatchers=2)"
mts_dispatchers="(address=(protocol=TCP)(host=198.254.38.17)(port=6101)) dispatchers=1)"
Если вы сконфигурировали MTS, то по умолчанию все клиентские запросы будут направляться к одному или более диспетчерам. Теперь допустим, что        клиенту нужно выполнить непрерывную последовательность вставок и обновлений, как при пакетной загрузке данных.
Очевидно, что в этом случае нет смысла соединяться с базой данных через MTS. Если вы хотите, чтобы определенный клиент всегда соединялся с базой данных через процесс выделенного сервера, нужно модифицировать файл sqlnet.ora этого клиента, установив следующий параметр:
use_dedicated_server=ON
Это приведет к автоматическому добавлению параметра (server= в раздел        дескриптора соединения, используемого клиентом. Нужно заметить, что установка use_dedicated_server= ON замещает любые другие установки server=, которые могли быть выполнены для данного клиента. Вы также можете отредактировать файл tnsnames.ora, добавив (server=DEDICATED) в раздел connect_data. Чтобы клиент всегда использовал диспетчер, следует поместить в раздел connect_data параметр (server=SHARED).
 









jAntivirus