ПУБЛИКАЦИЯ
12.04.01

Диагноз системе ставит Statspack

Владимир Пржиялковский,
преподаватель УКЦ Interface Ltd.


Диагностика работы промышленно эксплуатируемой системы 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. Уже в версии 8.1.7 Statspack оказался несколько реорганизован и файлы переименованы, что безусловно есть проявление поспешности некоторых решений фирмы Oracle и, соответственно, их "сыроватости" - обычная практика для нынешнего рынка ! Список файлов приводится ниже.
 
Файл
(версия 8.1.6)
Файл
(версия 8.1.7)
Описание
statspack.doc spdoc.txt Файл с текстом документации по Statspack
statscre.sql spcreate.sql

 

Сценарий создания окружения для работы Statspack. В свою очередь вызывает сценарии
- statscursr.sql (spcursr.sql в 8.1.7)
- statsctab.sql (spctab.sql в 8.1.7)
- statspack.sql (spcpkg.sql в 8.1.7),
создающие необходимые вспомогательные объекты (создается специальный пользователь PERFSTAT, а также принадлежащие ему таблицы, представления, последовательность, процедуры).
Запускается от имени SYS или INTERNAL.
statsdrp.sql spdrop.sql Сценарий удаления окружения для работы Statspack. (Удаляются все созданные объекты БД).
Запускается от имени SYS или INTERNAL.
statsrep.sql spreport.sql

 

Сценарий запуска задания на подготовку сравнительного отчета (делается сравнение по двум указанным моментам времени).
Запускается от имени PERFSTAT.
statsauto.sql spauto.sql

 

Заготовка сценария для запуска задания по автоматическому периодическому сбору статистики для Statspack.
Запускается от имени PERFSTAT.
statsuexp.par spuexp.par

 

Пример файла параметров для программы exp, с помощью которой можно экспортировать данные пользователя PERFSTAT.
Экспорт выполняется от имени PERFSTAT.
  sppurge.sql Удаление отдельных устаревших снимков статистики.
  sptrunc.sql Удаление всех снимков статистики

Как с ним работать

Несмотря на такое множество файлов, регулярная работа со Statspack сведется для вас только к вызову двух из них - spcreate.sql и spreport.sql (statscre.sql и statsrep.sql), а также к многократному вызову одной процедуры в промежутке.

Прежде чем работать со Statspack, нужно установить его рабочую среду. Делается это запуском сценария spcreate.sql (statscre.sql) от имени пользователя SYS (маленькое упражнение по отвыканию от использования имени INTERNAL, к чему нас призывает фирма в связи с грозящей его отменой в будущих версиях). Сценарий создаст пользователя PERFSTAT и необходимые для него объекты (таблицы, пакет).

Теперь от имени PERFSTAT вы можете вызвать процедуру из созданного пакета

Exec statspack.snap; 

Процедура snap соберет статистику о состоянии системы на момент своего запуска и заполнит полученными данными таблицы Statspack. Всякий последующий вызов snap приведет к сбору и запоминанию очередного “среза” информации о системе.

После вызова процедуры snap не менее двух раз можно попросить Statspack приготовить отчет. Для этого нужно вызвать сценарий spreport.sql (statsrep.sql). Сценарий перечислит вам все выполненные ранее моменты сбора информации и попросит указать какую-нибудь пару. По указанной паре сценарий spreport.sql (statsrep.sql) подготовит сравнительный отчет. Его можно посмотреть простым текстовым редактором.

Сбор статистики можно автоматизировать с помощью встроенного пакета DBMS_JOB. Для облегчения жизни администратора фирма поставляет образец необходимых для этого действий в файле spauto.sql (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, так как использует некоторые представления (views), в более ранних версиях отсутствующие.

Во-вторых, одна из таблиц, которую заводит Statspack, совпадает по имени с таблицей из Estat/Bstat. По этой причине совместно применять оба средства следует с предосторожностью. Правила соблюдения предосторожности очевидны и весьма просты, а вот последствия от их несоблюдения могут вызвать у администратора недоумение.

Приобрести продукты Oracle в нашем Интернет-магазине

Дополнительную информацию Вы можете получить в компании Interface Ltd.


Interface Ltd.


По техническим вопросам обращайтесь к вебмастеру
Документ опубликован: 12.04.01