Comment utiliser STATSPACK au lieu d'AWR dans Oracle Standard Edition

Bonjour, Habr! Je vous présente la traduction de l'article "Comment utiliser statspack au lieu de awr dans l'édition standard d'Oracle" .

Comment utiliser STATSPACK au lieu d'AWR dans Oracle Standard Edition.

Signaler un problème


Je collectais des données de performances dans une base de données inconnue. Après avoir exécuté le rapport AWR en exécutant la commande

@?/Rdbms/admin/awrrpt.sql 


Vous avez une erreur:
 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 ... 

Y a-t-il une chance que le package de diagnostic soit désactivé?

Voyons le paramètre CONTROL_MANAGEMENT_PACK_ACCESS.

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

J'étais un peu prudent quant à la valeur de NONE. Étant donné qu'Oracle Enterprise Edition inclut une licence de package de diagnostic et que Standart Edition ne le fait pas, je n'avais pas le droit de l'utiliser. Voyons les informations de version.

 .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 

Comme nous pouvons le voir, «Enterprise Edition» n'apparaissait pas dans la console. Il s'agit certainement de l'édition Standart. Eh bien, au moins je sais que je n'ai pas le droit de l'utiliser.

Quand j'ai regardé à nouveau le répertoire <ORACLE_HOME> / rdbms / admin, j'ai constaté que STATSPACK est toujours là, qui est l'outil de collecte de données de performances d'origine pour les anciennes bases de données et est très similaire à AWR dans les fonctions. Mieux encore, nous pouvons utiliser STATSPACK en remplacement d'AWR dans Standart Edition sans restriction.

Installer STATSPACK


Au moins deux étapes doivent être suivies pour créer un STATSPACK avec une tâche planifiée.

1) Exécutez le script spcreate.sql
Je vous suggère d'aller dans le répertoire <ORACLE_HOME> / rdbms / admin comme répertoire de travail actuel, car tous les journaux resteront dans ce répertoire au moment de l'exécution.

Exécutez le script:

 SQL> @spcreate.sql; 

Voyons ce que nous avons dans ce script:

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

Il nécessite 3 scripts SQL de base pour s'exécuter.
spcusr.sql

  • Il créera un utilisateur appelé PERFSTAT, le tablespace par défaut sera SYSAUX et le tablespace temporaire sera TEMP.
  • Les deux espaces table peuvent être configurés, mais avant d'exécuter ce script, vous devez vous assurer que les espaces table existent dans votre base de données.
  • Vous devez vous souvenir du mot de passe si vous souhaitez exécuter certaines routines ultérieurement. Spctab.sql

Dans la table spctab.sql, 71 tables STATSPACK seront créées.

 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

Il créera les procédures stockées STATSPACK nécessaires pour PERFSTAT.

2. Exécutez le script spauto.sql
Ce script enverra la tâche à l'intervalle spécifié (1 heure).

 SQL> @spauto.sql; 

Dans lequel il présente ce travail:

 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 / 

Et puis affichez le prochain runtime.

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

Plus de considérations


Pour des statistiques plus approfondies, vous devez modifier le niveau d'instantané à 7 au lieu du niveau par défaut de 5.

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

Cette commande changera le niveau d'accrochage à 7 et prendra une photo en même temps.

Source: https://habr.com/ru/post/fr424235/


All Articles