Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Настройка производительности. Использование STATSPACK






 

STATSPACK – набор скриптов, позволяющих собирать, сохранять и отображать данные о производительности системы. По сравнению с использованием скриптов UTLBSTAT/UTLESTAT STATSPACK обеспечивает больший объем обрабатываемых данных, расчитывает на основе собранных данных часто использующиеся коэффициенты (что приходилось делать вручную), хранит собранную статистику в таблицах, откуда информация может быть извлечена, используя все возможности SQL, включая данные, собиравшиеся ранее.

 

Как работает STATSPACK

 

С помощью специального скрипта создается схема пользователя PERFSTAT, где и будут сохраняться все необходимые объекты для работы STATSPACK. Этому пользователю даются права на чтение необходимых V$-представлений словаря.

При использовании STATSPACK используется понятие снимка (snapshot), в данном контексте означающего отдельный набор данных производительности, собранный с помощью STATSPACK (не путать со снимками - объектами БД). Каждый снимок получает уникальный идентификатор (SNAP_ID). STATSPACK может также использоваться в среде Real Application Clusters, где SNAP_ID вместе с идентификатором (DBID) и номером экземпляра (INSTANCE_NUMBER) уникально определяют снимок, позволяя хранить данные STATSPACK в одной схеме.

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

 

Установка и настройка STATSPACK

 

Для объектов STATSPACK требуется примерно 64Мб места на диске.

 

Для установки STATSPACK можно использовать один из способов:

 

- Интерактивная установка;

- Пакетная установка.

 

Интерактивная установка

 

Первый шаг – создание пользователя PERFSTAT. Необходимо указать основное и временное табличные пространства для создаваемого пользователя. Нельзя использовать для STATSPACK ТП SYSTEM. Во время установки STATSPACK создаются пакеты DBMS_SHARED_POOL и DBMS_JOB (если они еще не были созданы в системе).

Чтобы установить объекты STATSPACK, необходимо обратиться к хранилищу скриптов СУБД Oracle 10g - ORACLE_HOME/rdbms/admin и найти скрипт SPCREATE.SQL. Далее запустить SQL*Plus, присоединиться как SYSDBA, и запустить этот скрипт на выполнение.

 

 

В UNIX:

SQL> CONNECT / AS SYSDBA

SQL> @? /rdbms/admin/spcreate

 

В NT(2000):

SQL> CONNECT / AS SYSDBA

SQL> @%ORACLE_HOME%\rdbms\admin\spcreate

 

Этот скрипт запускает дополнительные:

 

SPCUSR.SQL: Создает пользователя и выдает привилегии;

SPCTAB.SQL: Создает таблицы;

SPCPKG.SQL: Создает пакет.

 

Для того, чтобы убедиться в корректной отработке скриптов, пронализируйте выходные файлы (SPCUSR.LIS, SPCTAB.LIS, SPCPKG.LIS) на предмет наличия ошибок.

 

Пакетная установка

 

Чтобы провести установку в пакетном режиме, необходимо в среде SQL*Plus описать переменные для основного и временного ТП для пользователя REPSTAT.

 

Переменную DEFAULT_TABLESPACE: для основного ТП;

Переменную TEMPORARY_TABLESPACE: для временного ТП.

 

Например,

 

В UNIX:

SQL> CONNECT / AS SYSDBA

SQL> define default_tablespace='tools'

SQL> define temporary_tablespace='temp'

SQL> @? /rdbms/admin/spcreate

 

В случае неудачной установки, либо при желании удалить объекты STATSPACK, воспользуйтесь скриптом rdbms/admin/spdrop.sql

 

Использование STATSPACK

 

Снятие снимков

 

Самый простой способ получить снимок данных производительности – в среде SQL*Plus, присоединившись как PERFSTAT, запустить процедуру STATSPACK.SNAP. Например,

 

SQL> CONNECT perfstat/perfstat

SQL> EXECUTE statspack.snap;

 

Это приведет к тому, что в стат-таблицах схемы PERFSTAT появятся данные первого снимка. Это – основа для последующих сравнений. Рекомендуется при этом установить параметр TIMED_STATISTICS в TRUE, это включит подробные временные отметки в собираемую информацию.

Чтобы получить впоследствии отчет, необходимо указывать идентификаторы снимков (SNAP_ID), которые определяют временной интервал, в рамках которого нужно получить информацию о производительности системы. Информацию о вывполенных снимках можно получить из таблицы схемы PERFSTAT - stats$snapshot.

 

SQL> select snap_id, snap_time from stats$snapshot

2 /

 

SNAP_ID SNAP_TIME

---------- ---------

1 08-JUN-03

2 08-JUN-03

 

Это можно также и сделать с помощью функции

STATSPACK.SNAP и связанной переменной. Следует учесть, что при этом осуществляется снятие снимка.

 

SQL> variable snap number;

SQL> begin: snap: = statspack.snap; end;

2 /

PL/SQL procedure successfully completed.

 

SQL> print snap

SNAP

----------

12

 

 

Автоматический сбор статистики при помощи STATSPACK

 

Для систематического сравнения производительности снятие снимков следует проводить регулярно: раз в день, раз в неделю и т.д. Лучше всего это реализуется через автоматизацию процесса снятия снимков через регулярные интервалы. Для этого можно воспользоваться либо пакетом СУБД Oracle 10gDBMS_JOB, либо средствами ОС, например, утилитами 'cron' в UNIX или 'at' в NT(2000).

Пример использования пакета DBMS_JOB для автоматизации сбора статистики БД представлен в скрипте rdbms/admin/spauto.sql. В нем настроено почасовое снятие снимков. Этим скриптом можно воспользоваться, чтобы настроить собственные процедуры сбора статистики. Использование пакета DBMS_JOB требует, чтобы значение параметра инициализации JOB_QUEUE_PROCESSES было равным числу одновременно работающих в системе заданий (jobs).

 

 

Создание отчета о производительности

 

После того, как снимки сделаны, можно сгенерировать отчет о производительности в системе. Для этого нужно знать идентификаторы двух снимков, начального и конечного. Деятельность, произошедшая в БД между ними, и уже сохраненная в таблицах PERFSTAT и будет являться источником отчета.

 

Необходимо отметить, что начальный и конечный снимки должны быть сделаны в течение одного сенаса работы экземпляра, ибо динамические представления словаря данных, используемые для сбора стат-данных, сбрасывают свои значение при рестарте экземпляра.

 

Столбец STARTUP_TIME таблицы STATS$SNAPSHOT содержит время запуска сеанса экземпляра, в течение работы которого производился снимок. Например,

 

SQL> select snap_id,

2 snap_time,

3 to_char(startup_time, 'DD.MON.YYYY HH: MI: SS') from stats$snapshot

4 /

 

SNAP_ID SNAP_TIME TO_CHAR(STARTUP_TIME

---------- --------- --------------------

1 08-JUN-03 08.JUN.2003 10: 10: 59

2 08-JUN-03 08.JUN.2003 10: 10: 59

3 08-JUN-03 08.JUN.2003 10: 35: 24

 

В этом примере снимки 1 и 2 сделаны в рамках одного сеанса, снимок 3 – уже в другом.

 

Формирование отчета осуществляется с помощью скрипта SPREPORT.SQL. Он должен выполняться под учетной записью пользователя PERFSTAT. Во время формирования отчета будут запрошены начальный и конечный SNAP_ID, также имя файла отчета.

 

SQL> connect perfstat/oracle

Connected.

 

@? /rdbms/admin/spreport

 

Запрос номера начального снимка:

 

Specify the Begin and End Snapshot Ids

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Enter value for begin_snap: 1

 

… конечного снимка:

 

Enter value for end_snap: 2

Запрос имени файла отчета (по умолчанию для отчетов используется каталог /bin и имя sp_< begin_snap > _< end_snap >.lst):

Specify the Report Name

~~~~~~~~~~~~~~~~~~~~~~~

The default report file name is sp_1_2. To use this name,

press < return> to continue, otherwise enter an alternative.

Enter value for report_name:

 

Больше вопросов не задается и формируется файл отчета.

Чтобы получить файл отчета вообще без вопросов, необходимо перед запуском прописать 3 переменные:

SQL> define begin_snap=1

SQL> define end_snap=2

SQL> define report_name=batch_run

 

И запустить SPREPORT.SQL.

 

В отчете, помимо общей информации о состоянии экземпляра, содержаться SQL-выражения, затраты ресурсов на выполнение которых может составлять значительную часть в общей картине производительности. Можно проанализировать подобные выражения более детально, используя их хэш адреса, которые содержаться в файле отчета, полученном с помощью SPREPORT. Для этого существует другой сценарий: SPREPSQL.SQL.

 

Для его работы, помимо тех же трех параметров, что указывались для сценария SPREPORT, необходимо указать значение хэш-адреса (hash value) SQL-выражения в разделяемом пуле.

Пример отчета для небольшого SQL-выражения:

 

SQL> @? /rdbms/admin/sprepsql.sql

 

 

DB Id DB Name Inst Num Instance

----------- ------------ -------- ------------

2921971007 MTS 1 mts

 

Completed Snapshots

Snap Snap

Instance DB Name Id Snap Started Level Comment

------------ ------------ ----- ----------------- ----- ----------------------

mts MTS 1 08 Jun 2004 10: 17 5

2 08 Jun 2004 10: 17 5

 

3 08 Jun 2004 10: 37 5

 

Specify the Begin and End Snapshot Ids

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Enter value for begin_snap: 1

Begin Snapshot Id specified: 1

 

Enter value for end_snap: 2

End Snapshot Id specified: 2

 

Specify the Hash Value

~~~~~~~~~~~~~~~~~~~~~~

Enter value for hash_value: 2065408759

Hash Value specified is: 2065408759

 

Specify the Report Name

~~~~~~~~~~~~~~~~~~~~~~~

The default report file name is sp_1_2_2065408759. To use this name,

press < return> to continue, otherwise enter an alternative.

Enter value for report_name:

 

Using the report name sp_1_2_2065408759

 

STATSPACK SQL report for Hash Value: 2065408759

 

DB Name DB Id Instance Inst Num Release Cluster Host

------------ ----------- ------------ -------- ----------- ------- ------------

MTS 2921971007 mts 1 9.2.0.4.0 NO ASAEV

 

Start Id Start Time End Id End Time Duration(mins)

--------- ------------------- --------- ------------------- --------------

1 08-Jun-04 10: 17: 16 2 08-Jun-04 10: 17: 39 0.38

 

SQL Statistics

~~~~~~~~~~~~~~

-> CPU and Elapsed Time are in seconds (s) for Statement Total and in

milliseconds (ms) for Per Execute

% Snap

Statement Total Per Execute Total

--------------- --------------- ------

Buffer Gets: 1 1.0.11

Disk Reads: 0 0.0

Rows processed: 0 0.0

CPU Time(s/ms): 0.0

Elapsed Time(s/ms): 0.1

Sorts: 0.0

Parse Calls: 1 1.0

Invalidations: 0

Version count: 2

Sharable Mem(K): 19

Executions: 1

 

SQL Text

~~~~~~~~


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.019 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал