Версия 8
Версия 8.1.6: диагноз системе ставит Statspack
Владимир Пржиялковский
Диагностика работы промышленно эксплуатируемой системы Oracle является важной ответственностью АБД и служит отправной точкой для действий по настройке или переконфигурации. Если оставить в стороне существующие на рынке средства диагностики, требующие отдельных затрат на приобретение и сопровождение, то можно напомнить об издавна поставлявшимся вместе с системой средством, состоящим из двух сценариев: utlbstat.sql и utlestat.sql. В обиходе их называют часто Estat/Bstat. Они и сейчас присутствуют в каталоге $ORACLE_HOME/rdbms/admin и ими, как прежде, можно пользоваться.
Тем, кто этого не делал, можно сообщить, что они образуют пару. Сначала (рекомендуется для этого использовать время, когда система загружена работой) запускается сценарий utlbstat.sql, который создает временные таблицы и заполняет их всяческой информацией из V$-таблиц. Потом, через некоторое время (рекомендуется также выбирать его в рабочий момент) запускается utlestat.sql, создающий свои таблицы, заполняя их результатом обработки информации, полученной ранее и такой же информации, но полученной на другой момент времени. После сравнительной обработки сценарий utlestat.sql выдает результаты в файл report.txt, который может изучать администратор.
Файл report.txt содержит много разной информации о работе системы; настолько много, что для расхожего использования достаточно бывает только процентов 10 всего отчета. Такое изобилие оборачивается недостатком: в тексте отчета довольно трудно разобраться, а поясняющую документацию фирма Oracle не поставляет.
Учитывая ли указанный недостаток (вкупе с некоторыми другими) Estat/Bstat, или что-то еще, но начиная с версии сервера 8.1.6 фирма поставляет одновременно еще и другое средство под общим названием Statspack. Statspack, по большому счету, делает то же самое, что его предшественник, но, по утверждению разработчиков, представляет результаты в более понятном виде, а во-вторых, более развит по своим возможностям. Читатель в состоянии судить сам, насколько это действительно так, а также убедиться в том, что на документировании Statspack фирма Oracle, по своему обыкновению, явно сэкономила. Еще простота и большая функциональная гибкость обернулись несколько большей сложностью в употреблении.
Из чего он состоит
Statspack представляет собой набор файлов со сценариями и сопроводительной документации, располагающийся так же в $ORACLE_HOME/rdbms/admin. Ниже приводится список файлов.
Файл |
Описание |
Statspack.doc |
Файл с текстом документации по Statspack |
Statscre.sql |
Сценарий создания окружения для работы Statspack. В свою очередь вызывает сценарии
statscursr.sql
statsctab.sql
statspack.sql,
создающие необходимые вспомогательные объекты (создается специальный пользователь PERFSTAT, а также принадлежащие ему таблицы, представления, последовательность, процедуры).
Запускается от имени SYS или INTERNAL. |
Statsdrp.sql |
Сценарий удаления окружения для работы Statspack. (Удаляются все созданные объекты БД).
Запускается от имени SYS или INTERNAL. |
Statsrep.sql |
Сценарий запуска задания на подготовку сравнительного отчета (делается сравнение по двум указанным моментам времени).
Запускается от имени PERFSTAT. |
Statsauto.sql |
Заготовка сценария для запуска задания по автоматическому периодическому сбору статистики для Statspack.
Запускается от имени PERFSTAT. |
Statsuexp.par |
Пример файла параметров для программы exp, с помощью которой можно экспортировать данные пользователя PERFSTAT.
Экспорт выполняется от имени PERFSTAT. |
Как с ним работать
Прежде чем работать со Statspack, нужно установить его рабочую среду. Делается это запуском сценария statscre.sql от имени пользователя SYS (маленькое упражнение по отвыканию от использования имени INTERNAL, к чему нас призывает фирма в связи с грозящей его отменой в будущих версиях). Сценарий создаст пользователя PERFSTAT и необходимые для него объекты (таблицы, пакет).
Теперь от имени PERFSTAT вы можете вызвать процедуру из созданного пакета
Exec statspack.snap;
Процедура snap соберет статистику о состоянии системы на момент своего запуска и заполнит полученными данными таблицы Statspack. Всякий последующий вызов snap приведет к сбору и запоминанию очередного “среза” информации о системе.
После вызова процедуры snap не менее двух раз можно попросить Statspack приготовить отчет. Для этого нужно вызвать сценарий statsrep.sql. Сценарий перечислит вам все выполненные ранее моменты сбора информации и попросит указать какую-нибудь пару. По указанной паре сценарий statsrep.sql подготовит сравнительный отчет. Его можно посмотреть простым текстовым редактором.
Сбор статистики можно автоматизировать с помощью встроенного пакета DBMS_JOB. Для облегчения жизни администратора фирма поставляет образец необходимых для этого действий в файле Statsauto.sql.
Параметры статистики
Объем собираемой при “снятии снимка” информации может быть разным. Во-первых, есть так называемый “уровень статистики”, который может принимать значения 0, 5 или 10 (еще один намек на намерения разработчиков развивать Statspack). Чем больше уровень, тем больше собирается информации.
Во-вторых, помимо этого имеется еще пять параметров, которые задают полноту статистики. Четыре параметра задают пороговые значения, так что Statspack будет помещать в отчет информацию обо всех превышениях этих значений. Еще один параметр указывает, будут ли данные сниматься в пределах одного конкретного сеанса, или же всех сеансов сразу.
Ниже приводится сводка параметров для сбора статистики в Statspack.
Параметр |
Допустимые значения |
Значение по умолчанию |
Смысл |
I_snap_level |
0, 5, 10 |
5 |
“Уровень статистики” |
I_ucomment |
Текст |
Пусто |
Комментарий для снимка |
I_executions_th |
Целое, >=0 |
50 |
Пороговое значение для числа выполнений SQL-запроса |
I_disk_reads_th |
Целое, >=0 |
1000 |
Пороговое значение для числа чтений диска при выполнении SQL-запроса |
I_parse_calls_th |
Целое, >=0 |
1000 |
Пороговое значение числа вызовов анализатора для SQL-запроса |
I_buffer_gets_th |
Целое, >=0 |
10000 |
Пороговое значение для числа чтений буфера данных при выполнении SQL-запроса |
I_session_id |
ID сеанса |
0 |
Идентфикатор сеанса работы |
I_modify_parameter |
True, false |
True |
Сохранять ли параметры для будущих “снятий снимков” |
Вообще-то параметры хранятся в таблице stats$statspack_parameters, созданной для пользователя PERFSTAT. Но изменять параметры на время снятия статистики можно и, например, так:
Exec statspack.snap(i_snap_level=>10, i_modify_parameter=>’true’);
Особенности применения
Работая (или пытаясь работать) со Statspack, нужно учесть следующее.
Во-первых, он может применяться только начиная с версии 8.1.6, так как использует некоторые представления, в более ранних версиях отсутствующие.
Во-вторых, одна из таблиц, которую заводит Statspack, совпадает по имени с таблицей из Estat/Bstat. По этой причине совместно применять оба средства следует с предосторожностью. Правила соблюдения предосторожности весьма просты, а вот последствия от их несоблюдения могут вызвать у администратора недоумение.
Дополнительную информацию Вы можете получить в компании Interface Ltd.
|