The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Анализ загрузки сервера Oracle c помощью V$LOG_HISTORY view (database oracle monitor load_average )


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: database, oracle, monitor, load_average,  (найти похожие документы)
From: Попов О.Б. <opopov@yandex.ru> Date: Mon, 2 Aug 2004 18:21:07 +0000 (UTC) Subject: Анализ загрузки сервера Oracle c помощью V$LOG_HISTORY view Оригинал: http://www.sama.ru/~popovob/oraloghist.html Анализ загрузки сервера Oracle c помощью V$LOG_HISTORY view. Попов О.Б. opopov@yandex.ru г.Самара,август 2002 года В этой статье я хотел обратить внимание на малоизвестный, но в тоже время простой и эффективный способ определения характера нагрузки сервера в OLTP системе. Зачем это нужно делать ? - Для этого есть несколько серьезных причин, а именно: a. при знакомстве с незнакомым окружением всегда полезно увидеть распределение нагрузки на сервер по времени суток и суммарную нагрузку по месяцам; b. Некоторые работы желательно проводить во время минимальной нагрузки на сервера a именно: + - массовая загрузка/выгрузка данных, + -процедуры резервного копирования(особенно если используется режим hot backup, во время которого все измененные после начала резервного копирования блоки записываются в журнал транзакций), + -коррекция параметров хранения данных(сбор статистики,перестройка разбалансированных индексов и т. д. ), Знание достоверной информации о том, в какое время суток и дни недели нагрузка минимальна, может позволить DBA более эффективно выполнять свои обязанности и при этом создавать меньше проблем пользователям. c. при настройке производительности серевера также надо знать, как изменялась нагрузка на сервер, за последнее время , и в этом случае всегда важно получить простой и ясный ответ на вопрос: действительно ли падение производительности сервера связано с резко возросшей на него нагрузкой , или дело в чем-то еще(например,увеличился объем хранимых данных и при этом плохо спланировано разбиение данных по дискам ) d. для диагностики производительности сервера администраторы используют сценарии сбора статистики, которые обычно стараются запускать в периоды максимальной активности, а это означает, что достоверная статистическая информация о пиках активности сервера очень важна для администратора e. и,наконец, DBA должен аргументированно добиваться соответствия серверного железа тем задачам, которые на нем решаются,так, например, желание сделать upgrade сервера должно быть серьезно мотивировано и подкрепленно объективными и воспроизводимыми данными о реальной нагрузке на сервер. Удивительно, но факт-грубый анализ загрузки сервера можно провести, используя одно единственное представление- V$LOG_HISTORY, которое содержит информацию из контрольных файлов. Описание полей V$LOG_HISTORY приведено в Oracle8i Reference(начиная с версии 8.0x до версии 8.1.7 структура V$LOG_HISTORY не изменялась, поэтому если вы используете Oracle в версии начиная с 8.0x, то все далее приведенные запросы будут работать корректно ). CAPTION: Таблица1. Структура V$LOG_HISTORY Column Datatype Description THREAD# NUMBER Thread number of the archived log SEQUENCE# NUMBER Sequence number of the archived log FIRST_TIME DATE Time of first entry (lowest SCN) in the log. This column was previously named TIME FIRST_CHANGE# NUMBER Lowest SCN in the log. This column was previously named LOW_CHANGE# NEXT_CHANGE# NUMBER Highest SCN in the log. This column was previously named HIGH_CHANGE# RECID NUMBER Controlfile record ID STAMP NUMBER Controlfile record stamp Нагрузка по месяцам: Запрос показывает количество изменений в БД, просуммированное и сгруппированное по месяцам. SELECT TO_CHAR(FIRST_TIME,'YYYY-MM')MONTH, SUM(NEXT_CHANGE#-FIRST_CHANGE#) TRANSACTIONS_PER_MONTH FROM V$LOG_HISTORY GROUP BY TO_CHAR(FIRST_TIME,'YYYY-MM') Taблица2.Результат выполнения запроса в SQL PLUS: SQL> SELECT TO_CHAR(FIRST_TIME,'YYYY-MM')MONTH, SUM(NEXT_CHANGE#-FIRST_CHANGE#) TRANSACTIONS_PER_MONTH FROM V$LOG_HISTORY GROUP BY TO_CHAR(FIRST_TIME,'YYYY-MM') ; MONTH TRANSACTIONS_PER_MONTH ------- ---------------------- 2000-12 127593 2001-01 73341 2001-02 91404 2001-03 69736 2001-04 104004 2001-05 263678 2001-06 283820 2001-07 322502 8 rows selected. Пример выполнения этого запроса(таблица 2), показывает , что некий сервер имеет довольно заметную тенденцию к увеличению количества транзакций в месяц. Нагрузка по дням за выбранный месяц Следущий запрос запрошивает у пользователя месяц и год и выдает распределение нагрузки по календарным датам за выбранный период. mw.sql: ACCEPT MD1 PROMPT"Enter month and year (MON-YYYY):"; SELECT TO_CHAR(FIRST_TIME,'DD') DAY, SUM(NEXT_CHANGE#-FIRST_CHANGE#) TRANSACTIONS_PER_DAY FROM V$LOG_HISTORY WHERE TO_CHAR(FIRST_TIME,'MON-YYYY')='&MD1' GROUP BY TO_CHAR(FIRST_TIME,'DD'); Taблица 3.Результат выполнения запросав SQL PLUS: SQL> @mw.sql Enter month and year (MON-YYYY):JUN-2001 old 4: WHERE TO_CHAR(FIRST_TIME,'MON-YYYY')='&MD1' new 4: WHERE TO_CHAR(FIRST_TIME,'MON-YYYY')='JUN-2001' DA TRANSACTIONS_PER_DAY -- -------------------- 01 23124 04 12712 05 11246 06 23977 07 34697 08 35239 09 43891 13 12547 18 23441 19 13266 21 85879 22 113342 25 62620 26 22750 27 13015 28 13406 29 13668 17 rows selected. SQL> Пример выполнения этого запроса(таблица 3), показывает , что сервер имеет нагрузку с 21 до 25 июня 2001 года сервер был загружен максимально, в остальные дни месяца-загрузщка совсем не велика. Суммарная нагрузка по времени суток: SELECT TO_CHAR(FIRST_TIME,'HH24') HOUR, SUM(NEXT_CHANGE#-FIRST_CHANGE#) TRANSACTIONS_PER_HOUR_SUM FROM V$LOG_HISTORY GROUP BY TO_CHAR(FIRST_TIME,'HH24') Taблица4.Результат выполнения запроса в SQL PLUS: SQL> SELECT TO_CHAR(FIRST_TIME,'HH24') HOUR, SUM(NEXT_CHANGE#-FIRST_CHANGE#) TRANSACTIONS_PER_HOUR_SUM FROM V$LOG_HISTORY GROUP BY TO_CHAR(FIRST_TIME,'HH24'); HOUR TRANSACTIONS_PER_HOUR_SUM ---- ------------------------- 08 19553 09 253255 10 226692 11 107578 12 234403 13 126301 14 153226 15 72623 16 45264 17 6135 18 1203 19 890 20 2048 11 rows selected. Пример выполнения этого запроса(таблица 4), показывает , что сервер имеет нагрузку с 8 до 20 часов и c 9 до 16 часов нагрузка значительно больше, чем в остальное время суток. Суммарная нагрузка подням недели: SELECT TO_CHAR(FIRST_TIME,'D') DN,TO_CHAR(FIRST_TIME,'DAY') DAY_OF_WEEK, SUM(NEXT_CHANGE#-FIRST_CHANGE#+1) TRANSACTIONS_PER_DAY_OF_WEEK FROM V$LOG_HISTORY GROUP BY TO_CHAR(FIRST_TIME,'D'), TO_CHAR(FIRST_TIME,'DAY') Taблица5.Результат выполнения запроса в SQL PLUS: SQL> SELECT TO_CHAR(FIRST_TIME,'D') DN,TO_CHAR(FIRST_TIME,'DAY') DAY_OF_WEEK, SUM(NEXT_CHANGE#-FIRST_CHANGE#+1) TRANSACTIONS_PER_DAY_OF__WEEK FROM V$LOG_HISTORY GROUP BY TO_CHAR(FIRST_TIME,'D'), TO_CHAR(FIRST_TIME,'DAY') DN DAY_OF_WEEEK TRANSACTIONS_PER_DAY_OF_WEEK - --------- ---------------------------- 1 SUNDAY 1401 2 MONDAY 1194239 3 TUESDAY 1120654 4 WEDNESDAY 1196367 5 THURSDAY 1752336 6 FRIDAY 1623841 7 SATURDAY 13393 7 rows selected. Последние два запроса показывают суммарные характеристики с момента создания базы данных.Иногда бывает полезно посмотреть как распределяется нагрузка по времени и дням недели за более короткий период(например за последний месяц ), необходимые для этого измененния в вышеприведенных запросах очевидны. © Попов О.Б. 2002

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Ваш комментарий
Имя:         
E-Mail:      
Заголовок:
Текст:





  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor