![]() |
+7 (495) 229-0436 | ![]() |
shopadmin@itshop.ru | 119334, г. Москва, ул. Бардина, д. 4, корп. 3 | ![]() |
![]() |
![]() |
|
|
Мониторинг использования индексов в планах запросов в Oracle 10g14.05.2012 17:14
Для мониторинга использования индексов Oracle предлагает простой способ - включить мониторинг индекса и выключитьпо завершению значимого для данного индекса периода. Описание на сайте Oracle тут. В результате в представлении V$OBJECT_USAGE вы можете увидеть ответ "Yes" или "No". Но что делать если: Ответ вполне очевиден - нужно проводить мониторинг текущей работы сервера за тот период который для вас является вполне приемлемым для оценки (календарный месяц например, когда все основные операции осуществляются). Для этого можно использовать данные которые собирает AWR, пример такого использования описан в статье "ORACLE INDEX USAGE TRACKING". Для мониторинга можно использовать такой алгоритм: Ниже пример реализации описанного алгоритма: 1.1. Подготовим все нужные права. Под sys нужно дать права на V$SQL, V$SQL_PLAN, V$SQL_BIND_CAPTURE (обратите внимание, что права на имена V$SQL, V$SQL_PLAN дать нельзя т.к. они синонимы): где schema_name- название схемы на которой нужно провести мониторинг. 1.2. Создадим таблицы для хранения полезной информации для анализа: -- таблица для хранение информации из V$SQL по интересным для нас обьектам -- таблица для хранения инфо из v$sql_plan - планов запросов -- таблица для хранение информации о параметрах с которыми был разобран впервые или переразобран данный план (тут не храятся последние переменные) где XXX - анализируемый елемент БД, в моем случае это был индекс, имя которого дальше будет object_name 2.1. Создадим процедуру для заполнения таблиц: -- мониторинг использования индекса -- monitoring object_name on schema_name FOR v_i IN (SELECT DISTINCT address, hash_value --------------------------------------------------------------------------------- END monitoring_sql_plans; где schema_name - имя вашей схемы БД 2.2. Создадим JOB для выполнения раз в пол часа (задайте удобное вам время): 3. Дальше время от времени или по завершению значимого периода анализируем результат. Для этого привожу несколько полезных разных срезов: SELECT round(t.cpu_time / 1000000, 2) AS time_seq, -- BIND VARIABLE для найдовшого запиту Описание V$SQL см. тут. Для моих нужд такого кода оказалось достаточно и к тому же базу он не нагрузил даже в период активной работы сотни пользователей с системой. Надеюсь кому-то данный пример поможет. Также на скорую руку сделана процедурка которая делает distinct clob-ов которые хранят SQL_FULLTEXT: DELETE FROM mon_index_usage_sqls; И ее использование: SELECT * FROM mon_index_usage_sqls; 4. После того как мониторинг закончился базу лучше почистить от ненужных таблиц и данных: Выводы: предложенный метод мониторинга использования индекса можно использовать для мониторинга любого объекта в планах запросов в таком разрезе как это нужно вам и так часто как это нужно вам )) Ссылки по теме |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
О нас |
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.
На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.
|
119334, г. Москва, ул. Бардина, д. 4, корп. 3 +7 (495) 229-0436 shopadmin@itshop.ru |
|
© ООО "Interface Ltd." Продаем программное обеспечение с 1990 года |