Statspack. Установка и настройка.

«А у нас в квартире газ! А у вас?» А у нас Standard Edition!

Лишенные радости использования AWR (Automatic Workload Repository) в Enterprise Edition администраторы SE могут использовать набор утилит мониторинга производительности Statspack.

Установить Statspack
@%ORACLE_HOME%\rdbms\admin\spcreate

OR
@?/rdbms/admin/spcreate

Хорошо, установили, но статистика от этого собирается просто так не станет.
Что бы автоматом собиралась статистика:
@?/rdbms/admin/spauto.sql

Он покажет номер задания:
The next scheduled run for this job is:
SQL> select job, next_date, next_sec
2 from user_jobs
3 where job = :jobno;

JOB NEXT_DATE NEXT_SEC
---------- --------- --------
1 07-APR-17 11:15:00

 

Получить отчёт:
@?/rdbms/admin/spreport.sql
Всё собранная статистика будет бережно храниться с табличном пространстве, которое мы назначили при установке. Что бы старые данные можно не копились, их можно (а чаще всего нужно) удалить. Облегчить жизнь администратору и автоматически удалять статистику каждые 15 дней, нам поможет:
BEGIN
DBMS_SCHEDULER.CREATE_SCHEDULE(
schedule_name => 'perfstat.statspack_every60',
repeat_interval => 'FREQ=HOURLY; INTERVAL=1');
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'perfstat.sp_snapshot',
job_type => 'STORED_PROCEDURE',
job_action => 'perfstat.statspack.snap',
schedule_name => 'perfstat.statspack_every60',
comments => 'Statspack collection');
DBMS_SCHEDULER.ENABLE('perfstat.sp_snapshot');
END;
/
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => '"PERFSTAT"."SP_PURGE_15"',
job_type => 'PLSQL_BLOCK',
job_action => 'begin
statspack.purge( i_purge_before_date => (sysdate-15));
end; ',
number_of_arguments => 0,
start_date => NULL,
repeat_interval => 'FREQ=DAILY;BYDAY=MON,TUE,WED,THU,FRI,SAT,SUN;BYHOUR=1;BYMINUTE=0;BYSECOND=0',
end_date => NULL,
enabled => FALSE,
auto_drop => FALSE,
comments => 'Purge SP older then 15 days');
DBMS_SCHEDULER.enable(name => '"PERFSTAT"."SP_PURGE_15"');
END;
/

Сделать снепшот вручную:
execute statspack.snap

Удаление Statspack

Подняли тест с продакшена? Изменился DBID?
Statspack не работает, а в алертлоге множество:
"ORA-12012: error on auto execute of job "PERFSTAT"."SP_SNAPSHOT"
ORA-04063: package body "PERFSTAT.STATSPACK" has errors"

Манипуляции с sppurge.sql по статье от Pythian не помогли и закончились тем что:
ERROR at line 1:
ORA-04063: package body "PERFSTAT.STATSPACK" has errors
ORA-06508: PL/SQL: could not find program unit being called:
"PERFSTAT.STATSPACK"
ORA-06512: at line 4

т.е. безрезультатно.

Простым решением может быть переустановка StatsPack.

Для удаления этого диагностического пакета, подключитель пользователем с привелегиями SYSDBA и запустите SPDROP сценарий из SQLPlus. Например:
SQL> CONNECT / AS SYSDBA
SQL> @?/rdbms/admin/spdrop

После этого устанавливаем. Вуаля! Всё работает 🙂

Больше подробностей на офф док.

Statspack. Установка и настройка.: 2 комментария

  1. Уведомление: log file sync — OracleHome

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *