DeepEdit!

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

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

Некоторые часто встречающиеся события


Тем, кто занимается настройкой, очень важно познакомиться с событиями, которые встречаются в большинстве систем. Очень хороший источник инфор­мации буквально обо всех событиях в системе приведен в приложении А спра­вочному руководству по Oracle. Мы рекомендуем изучить это руководство, так как оно крайне важно для понимания того, что означает каждое событие ожида­ния. В таблице 2.1 перечисляются некоторые часто встречающиеся события, с которыми нам в последние годы часто приходилось сталкиваться при исследо­вании систем. Столбец таблицы 2.1 "Смысл/Релевантность" не следует рассмат­ривать как истину в последней инстанции для конкретного события ожидания. Можно считать, что таблица 2.1 — это общее, но вовсе не исчерпывающее опи­сание каждого события, она предназначена для использования в качестве конт­рольной таблицы.
Таблица 2.1.
Ожидаемые события и ситуации, к которым они относятся
Смысл/Релевантность
Имя события ожидания
buffer busy waits

db file parallel write

db file scattered read db file sequential read db file single write direct path read
Индицирует ожидание буфера в буферном кэше базы данных. Это означает, что сеанс считывает этот буфер в кэш и/или модифицирует его. Может также служить симптомом нехватки списков свободных участков таблиц, поддерживающих множество параллельно выполняющихся операций INSERT.
Индицирует ожидания, относящиеся к процессам DBWR. Может быть связан с числом конфигурированных процессов DBWR или подчиненных процессов ввода/вывода DBWR. Может также означать низкую или высокую конкуренцию устройств.
Индицирует ожидания, ассоциируемые со сканированием всей таблицы. Может означать конкуренцию ввода/вывода или чрезмерное количество операций ввода/вывода.
Индицирует (наряду с другими вещами) ожидания, ассоциируемые
со сканированием индекса. Может означать конкуренцию ввода/вывода или
чрезмерное количество операций ввода/вывода.
Индицирует ожидания, ассоциируемые с записью в заголовок во время контрольной точки. Типично для среды со слишком большим числом файлов данных.
Индицирует ожидания, ассоциируемые с разрешенным прямым
вводом/выводом. Обычно указывает на конкуренцию ввода/вывода за
устройства.        

Таблица 2.1 (тлродоттжение)

Имя события        Смысл/Релевантность
ожидания
direct path write        To же, что и выше. Относится к операциям чтения.
enqueue        Индицирует ожидания, ассоциируемые с внутренним механизмом работы с
очередями для блокировок различных ресурсов и компонентов Oracle. Полный список ситуаций, связанных с постановкой в очередь в Oracle, можно найти в Приложении В к справочному руководству по Orace.
free buffer inspected        Индицирует ожидания, ассоциируемые с процессом идентификации
свободного буфера в буферном кэше базы данных для переноса в него данных.
free buffer waits        Индицирует недостаток свободных буферов в буферном кэше базы данных.
Это может означать одно из двух: либо буферный кэш базы данных слишком мал, либо "грязный список" (список модифицированный блоков кэша) не переписывается на диск достаточно быстро. Если дело в этом, сконфигурируйте большее количество процессов DBWR или подчиненных процессов ввода/вывода, в зависимости от обстоятельств. Это событие
происходит, когда инспектирующее свободные буферы событие не находит ни
одного свободного буфера.
latch free        Индицирует конкуренцию за защелку (внутреннюю блокировку) для
конкретного номера защелки (latch#). Убедитесь, что число защелок было настроено на максимально разрешенное значение, для чего проверьте релевантные (относящиеся к делу) параметры файла init.ora. Если проблема остается, необходимо определить, что вызывает конкуренцию за защелку. Событие latch free - это всего лишь симптом более серьезной проблемы. Например, если получающийся в результате номер защелки является защелкой библиотечного кэша (при этом коллективный пул настроен должным образом), ситуация может означать значительный объем жесткого синтаксического анализа. Это обычно является проблемой для приложений, содержащих в себе жестко закодированные значения. Необходимо либо переписать приложение, используя переменные связи, либо перейти к 0racle8i и использовать CURSOR_SHARING=force (или искать другие способы).
library cache load lock       Требуется для загрузки объектов в библиотечный кэш. Такое событие ожидания может произойти, если имеет место значительное число загрузок/перезагрузок (обычно подобное происходит вследствие либо недостаточного многократного использования операторов SQL, либо из-за
неправильно выбранного размера области коллективного пула).
library cache lock        Индицирует ожидания, ассоциируемые с одновременным выполнением
нескольких процессов, обращающихся к библиотечному кэшу. Может означать
неправильный выбор размера области коллективного пула, так как эту блокировку необходимо захватить для размещения объектов в библиотечном
кэше.

Таблица 2.1 

(продолжение)


Имя события ожидания
Смысл/Релевантность

library cache pin

log buffer space

log file parallel write

log file single write

log file switch
(требуется архивирование)

log file switch
(незавершенная контрольная точка)
log file sync

Сообщение SQL*Net от клиента/клиенту
Индицирует ожидания, которые ассоциируются с одновременными обращениями к библиотечному кэшу и могут происходить в тех случаях, когда необходимо модифицировать или проверить конфетный обьект в библиотечном кэше.
Индицирует потенциальную проблему:     не способен поддерживать
скорость записи серверными процессами в буфер журнала обновлений. Обычно означает, что имеет место проблема с размером буфера журнала (он слишком мал), или слишком медленно работает устройство (а), или имеется
конкуренция устройств, на которых размещаются работающие в онлайновом режиме журналы обновлений.
Индицирует ожидания, ассоциируемые с переписью записей протокола из
буфера журнала обновлений на диск. Обычно означает медленную работу
устройств (а) или наличие конкуренции на тех устройствах, где размещаются
работающие в онлайновом режиме журналы обновлений.
Индицирует запись в блок заголовка журнальных файлов. Может означать ожидания, возникающие во время выполнения контрольных точек.
Ожидание означает, что ARCH не работает синхронно с LGWR. Может
произойти из-за того, что онлайновые журналы обновлений слишком малы, устройства медленны или высока конкуренция за устройства (обычно
возникающая вследствие размещения журнальных файлов на тех же устройствах, что и файлы данных). Имеет смысл изучить возможность создания нескольких процессов ARCH или подчиненных процессов
ввода/вывода, в зависимости от обстоятельств.
Индицирует ожидания, ассоциируемые с неверно заданными размерами журнальных файлов (обычно слишком малыми).
Индицирует ожидания, ассоциируемые со сбрасыванием на диск буферов
журналов при выполнении операции фиксирования транзакции, Если ожидания являются устойчивыми, это может означать конкуренцию устройств,
на которых размещены онлайновые файлы журналов обновлений и/или медленную работу устройств.
Индицирует затраченное     в процессе взаимодействия
пользовательского и серверного процессов. В некоторых довольно редких случаях указывает на проблемы при передаче по сети, но по большей части может быть проигнорировано. Если приложение поддерживает конфигурацию ■ARRAYSIZE (например, Oracle Forms, SQL*Plus, Рго*С и т. д.), конфигурирование ARRAYSIZE на значение, превосходящее значение по умолчанию, может потенциально уменьшить ожидания для этого события.

Таблица 2.1 

(продолжение)


Имя события ожидания
Смысл/Релевантность

Сообщение SQL*Net от dblink

таймер в sksawat

transaction

undo segment extension

write complete waits
Индицирует ожидание, ассоциируемое с распределенной обработкой (выполнением SELECT из других баз данных). Это событие происходит, когда онлайновые просмотры других баз данных выполняются через DBUNKS. Если просматриваемые данные главным образом статические, их пересылка в локальную (расположенную на этой же ЭВМ) таблицу и ее обновление по мере необходимости могут дать существенное увеличение производительности.
Индицирует медленный процесс ARCH либо вследствие одновременного
выполнения множества компонентов базы данных, либо из-за недостаточного количества процессов ввода/вывода (или подчиненных процессов) для выполнения архивирования.
Индицирует ожидания, ассоциируемые с блокировкой транзакций операциями
отката.
Индицирует динамическое выделение экстентов и расширение сегментов отката. Это может означать нехватку (недостаточность) заданного числа сегментов отката или слишком малое значение оптимального числа MINEXTNTS для этих сегментов.
Индицирует ожидания, связанные с буферами, которые необходимо
переписать на диск. Такая запись может быть вызвана обычным старением
блоков из буферного кэша базы данных        

Замечание
.Полезно отметить, что интерфейс ожидания Oracle (Oracle Wait Interface) не идентифицирует непосредственно события ожидания, ассоциированные с операциями с памятью, операциями ЦП и даже логическими вызовами ввода/вывода. Однако список таких событий весьма невелик, и его существование ни в коей мере не должно помешать использованию интерфейса ожидания Oracle. Дело в том, что если событие не видно в интерфейсе ожидания, это косвенно приводит к обнаружению областей, содержащих проблемы. Располагая тем, что мы ранее назвали подходом "вилки" ("двухзубым" подходом), в котором второй "зубец" представляет статистику и мониторинг операционной системы, мы обязательно найдем виновника ситуации либо в Oracle, либо в операционной системе. Крайне редко встречаются ситуации, когда проблема, пройдя через все проверки, остается не обнаруженной ни одним из "зубцов".

Очень важно
*—г Хотя нашей основной целью должно быть выполнение
корректирующих действий для событий ожидания, имеющих
значение параметра STATEWAITED_KNOWN_TIME, нужно отметить, что если в системе имеется существенное количество сеансов, ожидающих события и находящихся в состоянии (STATE) WAITED_SHORT_TIME (меньше 1/100 с), необходимо вычислить взвешенное среднее значение времени ожидания таких сеансов. Если результирующее число превышает 1/100 долю секунды, уделите внимание тем событиям, которые первоначально были проигнорированы из-за того, что у них в столбце STATE стояло значение WAITED_SHORTTIME.
Прочие источники увеличения производительности
Множество ключей к управлению производительностью Oracle можно най­ти в файлах трассировки и журналах предупреждений. Эти файлы служат пер­вым сигналом о том, что что-то идет не так, как намечено. В частности, мониторинг файла предупреждений должен стать рутинной частью ежеднев­ных работ по отслеживанию состояния базы данных. Необходимо искать лю­бые виды ошибок. В журналах предупреждений осматривайте взаимные блокировки. Здесь перечислены все ошибки выделения памяти и пресловутые ошибки ОRACLE-00600. Некоторые из них появляются время от времени, и это можно считать нормальным явлением. Частое повторение подобных событий может стать поводом для беспокойства.
Добавление параметра LOG_CHECKPOINTS_TO_ALERT = TRUE вызовет запись в журнале предупреждений о событиях типа контрольной точки. Если новая контрольная точка начинает выполняться еще до того, как завершится предыдущая, должно появиться некое уведомление. При рутинном просмотре этих файлов иногда складывается впечатление, что экземпляр стартует, чтобы сбиться, или что разработчики пишут коды, в которых совершенно не учитыва­ются лучшие достижения механизма блокировок Oracle.
 


Русская версия Nero 9 скачать бесплатно







jAntivirus