В Oracle8i (8.1.6) появился еще один брэнд - пакет STATSPACK, который обещает стать новой и усовершенствованной версией utlbstat.sql/utlestat.sql. Применение пакета STATSPACK можно рассматривать как замену отжившего свое метода BSTAT/ESTAT.
STATSPACK собирает больше релевантных данных о производительности, чем BSTAT/ESTAT, предвычисляет некоторые из коэффициентов производительности, сохраняет их в схеме для использования в будущем и обеспечивает возможность сравнивать свежие данные с предыдущими (для этого ведется соответствующий архив).
Замечание
Хотя STATSPACK и начал поставляться только с версиями 8.1.6 и более поздними, он может выполняться с базами данных Oracle 8.O.
В приводимой ниже таблице перечисляются основные различия между
BSTAT/ESTAT и STATSPACK:
Основные характеристики/ возможности
|
BSTAT/ESTAT
|
STATSPACK
|
Конфигурируемый сбор данных
|
Нет
|
Да
|
Страница итогов для отчета
|
Нет
|
Да
|
Определение потребляющего много ресурсов
|
Нет
|
Да
|
Возможность хранить моментальные снимки
|
Нет
|
Да
|
производительности в базе данных
|
Для инсталляции пакета STATSPACK запускается скрипт statscre.sql (spcrea-te.sql для Oracle 8.1.7), который находится в каталоге $ORACLE_HOME/ rdbrns/adrnm. Запуск можно выполнить в рамках сеанса SQJL?Plus, зарегистрировавшись как Connect / as SYSDBA Этот скрипт создает пользователя с именем Perfstat, набор таблиц и пакет. Все приведенные ниже команды и процедуры следует выполнять от имени этого пользователя.
Замечание Данный скрипт необходимо выполнять с помощью SQL*Plus, а не в среде Server Manager. Кроме того, отметим, что отчет STATSPACK следует запускать с той же частотой, которая рекомендована для BSTAT/ESTAT —15 мин. И, наконец, не рекомендуется создавать таблицы для пользователя Perfstat в табличном пространстве SYSTEM, так как их размеры зависят от количества создаваемых моментальных снимков.
Для сбора данных о производительности применяется команда execute stat-spack.snap. Процедуру следует выполнять, когда система находится на пике активности и для разных рабочих нагрузок (OLTP, пакетные задания и т.п.). Можно посоветовать при планировании выполнения пакета использовать DBMSJOB или планировщик операционной системы (типа сгоп для UNIX). Для справок воспользуйтесь файлом примера statsauto.sql (spauto.sql для Oracle 8.1.7)
Параметры пакета:
• i_snap_level принимает значение 0 для статистики экземпляра,
5 — для информации об операторах SQL (значение по умолчанию) и 10 — для определения информации о дочерних блокировках и некоторых низкоуровневых исследовательских целей (включается
только в случае, если этого затребовала служба Oracle Support).
i_executions_th, i_buffer_gets_th, i_disk_reads_th, i_version_count_th, i_parse_calls_th и i_sharable_mem_th — это параметры, относящиеся к процессу установки порогов для идентификации высокозатратных операторов SQL.
i._uconniicni позволяет присвоить имя конкретному моментальному снимку.
Lsessionjd обеспечивает сбор информации сеансового уровня (по умолчанию это не
Все значения по умолчанию вышеупомянутых параметров хранятся в таблице. Изменить их можно с помощью процедуры statspack.modiiy_statspack_para-meter.
Отчет по моментальным снимкам производительности генерируется при исполнении statsrep.sql (spreport.sql в Oracle 8.1.7). Данные для отчета хранятся в базе данных, и здесь полезно отметить, что эти отчеты не могут быть переданы в удаленную базу данных или распределены между различными запусками экземпляра/базы данных. Скрипт принимает аргументы исполнительного периода для определения начального и конечного snap_id. При каждом прогоне моментального снимка производительности генерируется значение snap_id, которое
получается при помощи генератора последовательностей Oracle.
Отчет аналогичен выходным данным, генерируемым в методе
BSTAT/ESTAT. В итоговую страницу включена информация о пяти главных со-
бытиях ожидания (это именно то, что нам предстоит об исполь-
зовании коллективного пула, профиле нагрузки на систему, уровне
BSTAT/ESTAT. В итоговую страницу включена информация о пяти главных со-
бытиях ожидания (это именно то, что нам предстоит об исполь-
зовании коллективного пула, профиле нагрузки на систему, уровне
эффективности экземпляра и общие сведения о среде.
Далее представлен образец отчета, сгенерированного по материалам отчета пакета STATSPACK для реальной системы, находящейся в промышленной эксплуатации. Отчет форматирован таким образом, что мы можем видеть только
его итоговую часть, представляющую информацию о положении дел для всего союза. Повторяем, что нашей основной целью должно быть исследование пяти первых событий ожидания для настраиваемой базы данных. После того как это будет сделано, можно переходить к следующим пяти событиям из списка, заказав еще один прогон пакета STATSPACK. Чтобы не нарушить конфиденциальность заказчиков, имена базы данных и экземпляра изменены.
STATSPACK report for
DB Name DB Id Instance Inst Num
Release
OPS
Host
ACME 708513117 acme
4
Start Id End Id Start
3
Cache Sizes
8.0.5.0.0 NO End Time
30-Oct-OO 13:27:39
hp6
Snap Length (Minutes)
15.24
db_block_buffers: 40000
d!j.Mock..„size: 16384
lonjuiffei ■. 13107200
shared_pool_size: 100000000
Load Profile
Load Profile
Logical reads: Block changes: Physical reads: Physical writes: User calls: Parses: Hard Parses: Sorts: Transactions: Rows per Pet Blocks changed / Read: Recursive Call Pet: Rollback /transaction Pet: Instance Efficiency Percentages
Per Second
Redo size: 5739,29 2901,46 51,98 313,53 4,71 88,15 8,76 0,08 3,46 2,25
691,26 1,79
11,13 8,54
(Target 100%)
Per Transaction
12924,49
1288,43 23,08 139,23 2,09 39,14 3,89 0,04 1,54
Buffer Nowait Ratio: 100,00 Buffer Hit Ratio: 89,19
Library Hit Ratio: Redo NoWait Ratio: In-memory Sort Ratio: Soft Parse Ratio:
Latch Hit Ratio:
Top 5 Wait Events
99,70 100,00 100,00
99,05 100,00
55,3 27,8
9,35 3,98
Event
slave wait
library cache pin
Parallel Query Idle Wait - Slaves
Srlaps:
db file scattered read db file sequential read Wait Events for DB: Instance: ->cs - centisecond - 100th of a second ->ms - millisecond - 1000th of a second
(unit often used for disk timings)
Дополнительную информацию о пакете STATSPACK и документацию, которая поставляется вместе с выпуском Oracle (statspack.doc для 8.1.6 и spdoc.txt для 8.1.7), можно найти, посетив сеть технологий Oracle (Oracle Technology Net) по адресу http://technet.oracle.com/deploy/performance/. Этот файл также размещается в каталоге $ORACLE_HOME/rdbms/admin.
Замечание
Мы рекомендуем вместо BSTAT/ESTAT использовать пакет STATSPACK, если версия настраиваемой базы данных 8.0 и выше. STATSPACK предоставляет ту же самую информацию, что и BSTAT/ESTAT, но в более удобочитаемой и осмысленной форме с хорошо организованными разделами профиля нагрузки и эффективности. Кроме того, заметьте, что в Oracle версии 8.1.7 изменены имена многих скриптов. Полный список изменений находится в файле spdoc.txt.
Идентифицируйте узкие места производительности Oracle на текущий момент
В дополнение к тому, что можно найти в report.txt и STATSPACK, в представлениях V$SYSTEM_EVENT, V$SESSION_EVENT и V$SESSION_WAIT имеется очень много информации о текущем состоянии Oracle. В некоторых кругах эти три динамических представления производительности называются "интерфейсом ожидания". Именно здесь следует сделать первую остановку для того, чтобы понять, где находится узкое место. Подробно об этом написал Крейг Шаллахам-мер в статье "Прямая вдентификация конкуренции с использованием таблиц ожидания сеанса Oracle", размещенной на http://www.orapub.com/. Еще одно представление о методе, базирующемся на событиях ожидания, дано в презентации, озаглавленной "Диагноз проблемы производительности Oracle", автором которой является Кэри Миллсоп. Найти ее можно по адресу http://www. hotsos.com/ по ссылке на OAUG 2000 Database SIG Meeting. Оба вышеназванных сайта знакомят с большим количеством инструментов, которые помогут при обнаружении и анализе узких мест.
< Предыдущая | Следующая > |
---|