Базы данных Oracle - статьи

         

Как... ?


Как найти объект, являющийся источником всех событий buffer busy waits, которые можно увидеть в представлении v$waitstat?

Все мы читали руководства по настройке производительности: "Если вы видите ... может потребоваться увеличить количество списков свободных мест (freelists) для проблемной таблицы". Но там не сказано, как найти эту самую проблемную таблицу.

Вариант 1: выполнять непрерывный поток запросов к представлению v$session_wait и проверять значения столбцов p1, p2, p3 при возникновении этого события. Статистически, рано или поздно вы получите таким образом обоснованное представление о том, какой объект или объекты являются причиной проблемы. Этот вариант - достаточно болезненный, и результат его отчасти зависит от везения.

Вариант 2: включить событие 10046 на уровне 8 и получить поток информации об ожиданиях в трассировочных файлах. Весьма серьезно нагружает систему и тоже требует некоторого везения.

Вариант 3: есть событие (10240), которое должно порождать в трассировочном файле список адресов блоков, которые мы ожидаем (ура!), но мне еще не удавалось заставить это событие работать. Если вы знаете, как это сделать, сообщите мне, поскольку данное решение, безусловно, является оптимальным.

Итак, не хотите ли вы получить список именно тех блоков, которых приходится ждать, с идентфикаторами ожидающих сеансов, причиной и продолжительностью ожидания, и все это- с минимальными затратами ресурсов? Именно это, помимо прочего, и позволяет получить oracle_trace.



Содержание раздела