Как использовать 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/
Добавить комментарий