Автоматизация выявления проблемных запросов в Oracle 11g

На нашем тестовом стенде несколько наборов тестов будут запускаться подряд (без присмотра), создавая отчеты для последующего использования. Я хочу включить в эти отчеты запросы, которые являются кандидатами для дальнейшего изучения, вместе с данными, оправдывающими их включение в этот список. Мы должны быть в состоянии связать любой запрос, идентифицированный таким образом, с набором тестов, который выявил проблему.

Когда мы используем SQL Server, это относительно просто: вызов DBCC FREEPROCCACHE очищает все счетчики перед началом набора, затем в конце теста мы запускаем запрос к sys.dm_exec_query_stats, который дает нам доступ к счетчикам выполнения и мин. /max/total time(s) каждого кэшированного плана запроса с доступными перехватчиками для извлечения параметризованного оператора SQL (мы используем FORCED параметризацию в наших экземплярах mssql) и плана запроса.

Ссылка: http://msdn.microsoft.com/en-us/library/ms189741%28SQL.90%29.aspx

Мой вопрос: как мне реализовать приближение для этого, когда мое целевое приложение подключено к Oracle 11g? Мое чтение до сих пор предполагает, что все, что мне нужно, доступно через AWR, и что должна быть возможность прямого доступа к вспомогательным представлениям, но я не смог замкнуть круг самостоятельно.


person VoiceOfUnreason    schedule 24.09.2009    source источник


Ответы (4)


Зачем вам нужен прямой доступ к поддерживающим представлениям? Мне кажется, что самым простым решением было бы

  • Каждый набор тестов начинается и заканчивается явным созданием моментального снимка AWR, чтобы он знал начальный и конечный идентификатор моментального снимка и чтобы вы могли создавать отчеты AWR для каждого набора отдельно.
  • Вы запускаете отчеты AWR для каждого набора тестов
  • Вы просматриваете отчеты AWR, обращая особое внимание на различные разделы Top SQL.

Абсолютно возможно получить всю информацию из базовых представлений напрямую, но если вам это не нужно, это, очевидно, проще.

Просто для здравого смысла я должен указать, что я предполагаю, что у вас есть лицензия на использование AWR. Технически даже для запроса представлений AWR требуется, чтобы у вас была лицензия на пакет Performance and Tuning Pack. Если вы хотите напрямую обращаться к представлениям, а не создавать полные отчеты AWR из-за проблем с лицензированием, вы не избавите себя от головной боли с лицензией, обращаясь к представлениям.

person Justin Cave    schedule 25.09.2009
comment
+1 Отчеты AWR могут создаваться (текстовые или html) с помощью стандартных сценариев, которые являются частью установки, и хорошо ранжируют ваш SQL по различным категориям ресурсов. - person dpbradley; 25.09.2009

Эквивалент Oracle DBCC FREEPROCCACHE:

SQL> alter system flush shared_pool;
person APC    schedule 25.09.2009
comment
Не сбрасывает счетчики (например, V$SYSSTAT и V$SYSTEM_EVENT) - person Gary Myers; 26.09.2009


У ответа Джастина был правильный план, но мне нужно было больше подробностей о реализации.

  • Каждый набор тестов начинается и заканчивается явным созданием моментального снимка AWR, чтобы он знал начальный и конечный идентификатор моментального снимка и чтобы вы могли создавать отчеты AWR для каждого набора отдельно.
  • Вы запускаете отчеты AWR для каждого набора тестов
  • Вы просматриваете отчеты AWR, обращая особое внимание на различные разделы Top SQL.
  • Я явно генерирую снимки, вызывая dbms_workload_repository.create_snapshot, результат сохраняется на потом.

    выберите dbms_workload_repository.create_snapshot() как snap_id из двойного

  • Чтобы получить отчет, мне нужен идентификатор базы данных и номер экземпляра. Их легко получить из v$database и v$instance.

    выберите d.DBID, i.instance_number как inst_num из v$database d, v$instance i

  • Отчет доступен в виде текста (dbms_workload_repository.awr_report_text) или html (dbms_workload_repository.awr_report_html). Аргументы одинаковы в обоих случаях, включая флаг параметров, который будет включать информацию из монитора автоматической диагностики базы данных (ADDM). Мне не сразу стало очевидно, что я могу использовать результаты ADDM, поэтому я отключил это. Возвращаемое значение представляет собой столбец varchar, поэтому вызов функции оборачивается

    выберите вывод из таблицы (dbms_workload_repository.awr_report_html (1043611354,1,5539,5544,0))

  • Этот результат легко записывается в файл, который собирается с остальными артефактами теста.

Документация по этим методам доступна в Интернете

person VoiceOfUnreason    schedule 15.10.2009