070495c0

Некоторые результаты


Итак, что же мы сделали:

  • Создали файл конфигурации
  • Начали сбор данных
  • Выполнили определенные действия в базе данных
  • Остановили сбор данных
  • Сформатировали набор данных
  • И что теперь?

    Предположим, мы использовали файл конфигурации, представленный на 2. Подключившись от имени учетной записи otrace, мы обнаружим строки в таблицах connection, disconnect и wait. Строки в таблице wait расскажут на все о событиях buffer busy waits, произошедших за время трассировки.

    Например, мы могли выполнить SQL-оператор, представленный на 4:

     

    select p1 file_id, p2 block_id, p3 reason_code, count(*) ct, sum(time_waited)/100 secs

    from wait group by p1, p2, p3 order by sum(time_waited) desc ;

     

    4: Пример запроса, позволяющий выявить наиболее продолжительные ожидания занятых блоков

    Если необходимо большая точность, можно выдать все ожидания с временными отметками, и столбцом, (довольно оптимистично) названным timestamp_nano.

    Если необходимо выяснить, каким пользователям пришлось ждать дольше всего, измените запрос, и суммируйте по столбцам session_index (SID) и session_serial (serial#). Для получения по значениям (session_index, session_serial) имени пользователя, имени машины, времени регистрации и т.п. можно использовать таблицу (синоним) connection.

    Конечно, ничего (кроме снижения производительности) не мешает соединять эту таблицу с представлением dba_extents для преобразования идентификаторов файла и блока в типы и имена объектов.

    А если необходимо выявить конкретные SQL-операторы, при выполнении которых пришлось ждать, всегда, хотя и ценой затраты еще больших ресурсов, можно перейти на использование файла sql_waits.fdf, который приводит к заполнению трассировочной информацией еще нескольких таблиц, которые затем можно соединять по столбцам session_index, session_serial, timestamp и timestamp_nano.

    Наконец, если вы думаете, что затраты на загрузку данных в таблицы и построение отчетов отрицательно скажутся на системе, всегда можно перенести файлы cdf и dat на другую машину и обрабатывать их в другой базе данных. Мне удалось даже, с небольшими исправлениями, сгенерировать набор данных на экземпляре версии 9i, а затем обработать их на экземпляре версии 8i, просто чтобы доказать эту возможность. Это, конечно, затруднит возможность по номерам блоков определять объекты.



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