Hola Habr! Le presento la traducción del artículo
"Cómo usar el paquete de estadísticas en lugar de awr en la edición estándar de Oracle" .
Cómo usar STATSPACK en lugar de AWR en Oracle Standard Edition.
Informar problema
Estaba recopilando datos de rendimiento en una base de datos desconocida.
Después de ejecutar el informe AWR ejecutando el comando
@?/Rdbms/admin/awrrpt.sql
Tengo un error:
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 ...
¿Existe la posibilidad de que el paquete de diagnóstico esté deshabilitado?
Veamos el parámetro CONTROL_MANAGEMENT_PACK_ACCESS.
SQL> show parameter control_management_pack_access NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ control_management_pack_access string NONE
Fui un poco cauteloso sobre el valor de NINGUNO. Dado que Oracle Enterprise Edition incluye una licencia de paquete de diagnóstico, y Standart Edition no, no tenía derecho a usarlo. Veamos la información de la versión.
.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
Como podemos ver, "Enterprise Edition" no apareció en la consola. Esta es definitivamente la edición Standart. Bueno, al menos sé que no tengo derecho a usarlo.
Cuando volví a mirar el directorio <ORACLE_HOME> / rdbms / admin, descubrí que STATSPACK todavía está allí, que es la herramienta original de recopilación de datos de rendimiento para bases de datos antiguas y es muy similar a AWR en funciones. Lo mejor de todo es que podemos usar STATSPACK como un reemplazo para AWR en Standart Edition sin restricciones.
Instalar STATSPACK
Se deben tomar al menos dos pasos para crear un STATSPACK con una tarea programada.
1) Ejecute el script spcreate.sql
Le sugiero que vaya al directorio <ORACLE_HOME> / rdbms / admin como su directorio de trabajo actual, porque todos los registros permanecerán en este directorio en tiempo de ejecución.
Ejecute el script:
SQL> @spcreate.sql;
Veamos qué tenemos en este script:
@@spcusr connect perfstat/&&perfstat_password @@spctab @@spcpkg
Requiere 3 scripts SQL básicos para ejecutarse.
spcusr.sql
- Creará un usuario llamado PERFSTAT, el espacio de tabla predeterminado será SYSAUX y el espacio de tabla temporal será TEMP.
- Ambos espacios de tabla se pueden configurar, pero antes de ejecutar este script, debe asegurarse de que existan espacios de tabla en su base de datos.
- Debe recordar la contraseña si desea ejecutar algunas rutinas más adelante. Spctab.sql
En la tabla spctab.sql, se crearán 71 tablas 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
Creará los procedimientos almacenados STATSPACK necesarios para PERFSTAT.
2. Ejecute el script spauto.sql
Este script enviará la tarea en el intervalo especificado (1 hora).
SQL> @spauto.sql;
En el que presenta este trabajo:
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 /
Y luego muestra el próximo tiempo de ejecución.
SQL> select job, next_date, next_sec 2 from user_jobs 3 where job = :jobno;
Más consideraciones
Para obtener estadísticas más detalladas, debe cambiar el nivel de instantánea a 7 en lugar del nivel predeterminado de 5.
SQL> exec statspack.snap(i_snap_level => 7, i_modify_parameter => 'true');
Este comando cambiará el nivel de ajuste a 7 y tomará una foto al mismo tiempo.