Как использовать STATSPACK вместо AWR в Oracle Standard Edition

от автора

Привет, Хабр! представляю вашему вниманию перевод статьи «How to use statspack instead of awr in oracle standard edition».

Как использовать STATSPACK вместо AWR в Oracle Standard Edition.

Проблема с отчетами

Я собирал данные о производительности в незнакомой базе данных. После того, как я запустил отчет AWR, выполнив команду

@?/Rdbms/admin/awrrpt.sql 

Получил ошибку:

WARNING (-20023) ORA-20023: Missing start and end values for time model stat: parse time elapsed WARNING (-20023) ORA-20023: Missing start and end values for time model stat: DB CPU WARNING (-20016) ORA-20016: Missing value for SGASTAT: free memory ... 

Есть ли вероятность, что диагностический пакет отключен?

Давайте посмотрим параметр CONTROL_MANAGEMENT_PACK_ACCESS.

SQL> show parameter control_management_pack_access  NAME                                 TYPE ------------------------------------ ---------------------- VALUE ------------------------------ control_management_pack_access       string NONE

Я немного осторожно оценил значение NONE. Поскольку Oracle Enterprise Edition включает лицензию диагностического пакета, а Standart Edition — нет, я не имел права использовать ее. Посмотрим информацию о версии.

.SQL> select * from v$version;  BANNER --------------------------------------------------------------------------------  Oracle Database 11g Release 11.1.0.6.0 - 64bit Production PL/SQL Release 11.1.0.6.0 - Production CORE    11.1.0.6.0      Production TNS for 64-bit Windows: Version 11.1.0.6.0 - Production NLSRTL Version 11.1.0.6.0 - Production 

Как мы видим, «Enterprise Edition» не отобразилась в консоли. Это определенно Standart Edidtion. Ну, по крайней мере, я знаю, что я не имею права использовать его.

Когда я снова посмотрел в директорию <ORACLE_HOME>/rdbms/admin, я обнаружил, что STATSPACK все еще там, что является оригинальным инструментом сбора данных о производительности для более старых баз данных и очень похож на AWR в функциях. Лучше всего, что мы можем использовать STATSPACK в качестве замены AWR в стандартных изданиях без ограничений.

Установка STATSPACK

Для создания STATSPACK с запланированным заданием необходимо выполнить по крайней мере два шага.

1) Выполнить скрипт spcreate.sql
Я предлагаю вам перейти в директорию <ORACLE_HOME>/rdbms/admin как ваш текущий рабочий каталог, потому что все журналы во время выполнения останутся с этим каталогом.

Выполним скрипт:

SQL> @spcreate.sql;

Давайте посмотрим, что у нас есть в этом скрипте:

@@spcusr connect perfstat/&&perfstat_password @@spctab @@spcpkg 

Для запуска требуется 3 основных сценария SQL.
spcusr.sql

  • Он создаст пользователя под названием PERFSTAT, табличное пространство по умолчанию будет SYSAUX, а временное табличное пространство dafault будет TEMP.
  • Оба табличных пространства могут быть настроены, но перед запуском этого сценария вы должны убедиться, что табличные пространства существуют в вашей базе данных.
  • Вам нужно запомнить пароль, если вы захотите выполнить некоторые подпрограммы позднее.spctab.sql

В таблице spctab.sql будет создано 71 таблица STATSPACK.

STATS$DATABASE_INSTANCE STATS$LEVEL_DESCRIPTION STATS$SNAPSHOT STATS$DB_CACHE_ADVICE STATS$FILESTATXS STATS$TEMPSTATXS STATS$LATCH STATS$LATCH_CHILDREN STATS$LATCH_PARENT STATS$LATCH_MISSES_SUMMARY STATS$LIBRARYCACHE STATS$BUFFER_POOL_STATISTICS STATS$ROLLSTAT STATS$ROWCACHE_SUMMARY STATS$SGA STATS$SGASTAT STATS$SYSSTAT STATS$SESSTAT STATS$SYSTEM_EVENT STATS$SESSION_EVENT STATS$WAITSTAT STATS$ENQUEUE_STATISTICS STATS$SQL_SUMMARY STATS$SQLTEXT STATS$SQL_STATISTICS STATS$RESOURCE_LIMIT STATS$DLM_MISC STATS$CR_BLOCK_SERVER STATS$CURRENT_BLOCK_SERVER STATS$INSTANCE_CACHE_TRANSFER STATS$UNDOSTAT STATS$SQL_PLAN_USAGE STATS$SQL_PLAN STATS$SEG_STAT STATS$SEG_STAT_OBJ STATS$PGASTAT STATS$PARAMETER STATS$INSTANCE_RECOVERY STATS$STATSPACK_PARAMETER STATS$SHARED_POOL_ADVICE STATS$SQL_WORKAREA_HISTOGRAM STATS$PGA_TARGET_ADVICE STATS$JAVA_POOL_ADVICE STATS$THREAD STATS$FILE_HISTOGRAM STATS$EVENT_HISTOGRAM STATS$TIME_MODEL_STATNAME STATS$SYS_TIME_MODEL STATS$SESS_TIME_MODEL STATS$STREAMS_CAPTURE STATS$STREAMS_APPLY_SUM STATS$PROPAGATION_SENDER STATS$PROPAGATION_RECEIVER STATS$BUFFERED_QUEUES STATS$BUFFERED_SUBSCRIBERS STATS$RULE_SET STATS$OSSTATNAME STATS$OSSTAT STATS$PROCESS_ROLLUP STATS$PROCESS_MEMORY_ROLLUP STATS$SGA_TARGET_ADVICE STATS$STREAMS_POOL_ADVICE STATS$MUTEX_SLEEP STATS$DYNAMIC_REMASTER_STATS STATS$IOSTAT_FUNCTION_NAME STATS$IOSTAT_FUNCTION STATS$MEMORY_TARGET_ADVICE STATS$MEMORY_DYNAMIC_COMPS STATS$MEMORY_RESIZE_OPS STATS$INTERCONNECT_PINGS STATS$IDLE_EVENT 

spcpkg.sql

Он создаст необходимые хранимые процедуры STATSPACK для PERFSTAT.

2. Выполнить скрипт spauto.sql
Этот скрипт отправит задание с заданным интервалом (1 час).

SQL> @spauto.sql; 

В котором он представляет такую работу:

SQL> begin   2    select instance_number into :instno from v$instance;   3    dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);   4    commit;   5  end;   6  / 

А затем покажите следующее время выполнения.

SQL> select job, next_date, next_sec   2    from user_jobs   3   where job = :jobno;

Больше соображений

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

SQL> exec statspack.snap(i_snap_level => 7, i_modify_parameter => 'true');

Этот оператор изменит уровень привязки на 7 и одновременно сделает снимок.


ссылка на оригинал статьи https://habr.com/post/424235/


Комментарии

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

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