Pulse para guardar enlace y compartir esta web. Ayuda para Oracle en Twitter Pulse para guardar enlace y compartir esta web. Ayuda para Oracle en Facebook Pulse para guardar enlace y compartir esta web. Búscanos en Google+ Pulse para guardar enlace y compartir esta web Pulse para generar codigo QR del enlace y compartir esta web

Actualizar estadísticas

Consiste en recopilar y actualizar el CATALOGO de oracle con datos estadísticos.

En las ultimas versiones, estos datos estadísticos son muy importantes para que oracle pueda elegir el plan de ejecución más adecuado a cada sentencia (EXPLAIN PLAN).

Estos datos no pueden actualizarse en tiempo real porque penalizarías mucho el rendimiento general de la base de datos.

Se actualizan datos como el número de registros de una tabla, el tamaño de los objetos, etc.

Actualmente hay dos formas de actualiza las estadísticas de las tablas e indices, con el comando ANALYZE y con el paquete DBMS_UTILITY.

Comando ANALYZE

El comando ANALYZE sirve para recopilar y actualizar el CATALOGO de oracle con datos estadísticos.

La cláusula COMPUTE hace un cálculo exacto de la estadísticas (tarda más en realizarse en ANALYZE)

La cláusula ESTIMATE hace una estimación partiendo del anterior valor calculado y de un posible factor de variación.

La cláusula DELETE borra las anteriores estadísticas.

Para analizar tabla con sus indices:

ANALYZE TABLE T_PEDIDOS COMPUTE STATISTICS;
Para analizar solo la tabla:

ANALYZE TABLE T_PEDIDOS COMPUTE STATISTICS FOR TABLE;
Para analizar solo sus indices:

ANALYZE TABLE T_PEDIDOS COMPUTE STATISTICS FOR ALL INDEXES;
Para analizar tabla con sus indices por estimación mirando el 20% de las filas:

ANALYZE TABLE T_PEDIDOS ESTIMATE STATISTICS SAMPLE 20 PERCENT;
Para borrar las estadísticas:

ANALYZE TABLE T_PEDIDOS DELETE STATISTICS;
Sintaxis completa:

   ANALYZE TABLE tabla COMPUTE|ESTIMATE|DELETE STATISTICS ptnOption options
   ANALYZE INDEX indice COMPUTE|ESTIMATE|DELETE STATISTICS ptnOption options
   ANALYZE CLUSTER cluster COMPUTE|ESTIMATE|DELETE STATISTICS options
donde ptnOption puede ser:

   PARTITION (partion)
   SUBPARTITION (subpartition)
y donde options puede ser:

   VALIDATE STRUCTURE [CASCADE] [INTO tablename]
   LIST CHAINED ROWS [INTO tablename]
   COMPUTE|ESTIMATE STATISTICS FOR TABLE
   COMPUTE|ESTIMATE STATISTICS FOR ALL COLUMNS
   COMPUTE|ESTIMATE STATISTICS FOR ALL INDEXED COLUMNS
   COMPUTE|ESTIMATE STATISTICS FOR COLUMNS [SIZE int] column [SIZE int]

cuando queremos hacer solo una estimación debemos elegir una de estas opciones:

    ... ESTIMATE STATISTICS SAMPLE n ROWS
    ... ESTIMATE STATISTICS SAMPLE n PERCENT

Al validar la estructura se realiza un control de la integridad y puede bloquear la tabla/indice/cluster mientras esta en marcha.

El recálculo de las estadísticas necesita gran cantidad de espacio de forma temporal. Podriamos tener que incrementar el valor para SORT_AREA_SIZE.

Si usamos la clausula INTO para almacenar una lista de filas enlazadas, la tabla por defecto es CHAINED_ROWS.

Con el paquete DBMS_UTILITY

El comando ANALYZE esta disponible en todas las versiones de oracle, pero es más comodo, más rapido y se obtienen mejores resultados si se usa el paquete DBMS_UTILITY y esta disponible a partir de la version 8.0.


DBMS_UTILITY.ANALYZE_SCHEMA('PROGRAMADOR','ESTIMATE', NULL, 10)

DBMS_UTILITY.ANALYZE_DATABASE('ESTIMATE',NULL,20,NULL)