DeepEdit!

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

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

Настройка Solaris


Sun Solaris - это, наверное, самая широко используемая операционная систе­ма для серверов Интернета. К моменту создания книги Oracle использовал ее для написания программного обеспечения своей базы данных. Мы выделяем Sun Solaris из всех операционных систем, с которыми нам пришлось работать, за ее простоту использования, богатый набор команд и доступные инструмента­льные средства. Обычно все новые выпуски программного обеспечения Oracle
в первую очередь становятся доступными на платформе Solaris. Только что об­наруженным ошибкам требуются патчи, и в первую очередь они появляются на Solaris (если это возможно). Другие операционные системы обычно получают
исправленные (patched-up) версии программного обеспечения Oracle, которое
затем портируется. В нем обычно наблюдается меньше сбоев, потому что основ­ные проблемы ко времени портирования уже зафиксированы и исправлены.
В среде Solaris необходимо ознакомиться с командами vmstat, sar, iostat, swap и mpstat. Найдите по соответствующим руководствам их основные ключи и те выходные данные, которые они генерируют. В разделе "Идентифицируйте
текущие узкие места ОС" главы "Метод, стоящий за безумием" обсуждаются
команды sar и vmstat. Команда swap сообщает о текущей деятельности по под­качке страниц, a mpstat - о статистике для каждого из процессоров. Эти коман­ды могут оказать помощь при проверке производительности системы и идентификации возможностей настройки ОС. Еще одна команда - truss - отсле­живает системные вызовы (внутренние команды ОС для команд пользовате­лей). Это очень мощная команда для выяснения, что же делает Oracle при обслуживании запрошенных пользователем команд или операций, например
запросов ввода/вывода или любых из перечисленных выше команд. Мы особо
отмечаем эту команду, потому что она временно недоступна в других операцион­ных системах в таком же легком для применения формате. Сопоставимые команды могут существовать, но так как АБД не является пользователем root, он ограничен в том, что ему позволено увидеть. Как АБД ему может оказаться необ­ходимо использовать эту команду для определения тех немногих операций, ко­торые не могут объяснить свое поведение. Кроме того, команда sysdef покажет все текущие значения параметров ядра, a dmesg позволит увидеть такие характе­ристики аппаратуры, как количество ЦП, тактовая частота, количество конфигу­рированной памяти и т. д. В следующем разделе рассматриваются некоторые
основные конфигурации и направления настройки для Solaris.
Асинхронный ввод/вывод
Асинхронный ввод/вывод, как это следует из названия, это метод выполне­ния ввода/вывода неблокированным способом, так, чтобы процессы не ждали завершения операции ввода/вывода (это особенно справедливо для операций записи). При успешном завершении, к примеру, операции записи, ОС возвраща­ет приложению (в нашем случае - Oracle) статус или флаг "ввод/вывод закон­чен". Преимущества такого подхода заключается в том, что Oracle не требуется ожидать завершения операции записи на запоминающем устройстве.
В ОС Solaris асинхронный ввод/вывод реализуется двумя способами: с испо­льзованием библиотек пользователя (подход на базе потоков) и внутри ядра. Это верно для версий ОС, начиная с Solaris 2.3. В Solaris 2.4 и более поздних вер­сиях поддержка асинхронного ввода/вывода в ядре (КАЮ, kernel asynchronous I/O) сделана доступной непосредственно в ядре. Здесь необходимо отметить,
что КАЮ в Solaris поддерживается только для сырых (raw) устройств и файлов Quick I/O фирмы Veritas, а не для нормальных файловых систем. Однако асинх­ронный ввод/вывод с использованием библиотек пользователей (потоков)
поддерживается и для файловых систем. Для активизации асинхронного вво­да/вывода нужно установить на TRUE параметр инициализации Oracle DISK_ASYNNCH_IO. Обычной практикой является использование либо асинх­ронного ввода/вывода, либо нескольких программ записи базы данных. Таким образом, число процессов записи базы данных при использовании асинхронно­го ввода/вывода должно быть установлено равным

Замечание
Применяя асинхронный ввод/выводдля нормальных файловых систем, можно обнаружить ошибки КАЮ, причем будет казаться, что вызовы асинхронного ввода/вывода закончились неудачей. Но за кулисами API библиотек пользователя распределит и использует пул потоков для выполнения ввода/вывода асинхронным образом. Закончившиеся неудачей КАЮ вызывают сигналы условной переменной, проверяемой одним из потоков, которые затем выполняют системные вызовы ввода/вывода, чтобы произвести асинхронный ввод/вывод. Это в лучшем случае может быть названо фиктивным асинхронным вводом/выводом для нормальных файловых систем. По словам источников в Sun Microsystems, это характеристика, а не ошибка и она потенциально устраняет системный вывод, если устройство поддерживает КАЮ. Однако мы все еще верим, что у реализации остается пространство для маневра.
 









jAntivirus