SQL Tuning Set Oracle Database

En esta entrada vamos a ver como crear un SQL Tuning Set (STS) que posteriormente podemos utilizarlo de diversas formas.

Un SQL Tuning Set (STS), es un conjunto de operaciones sobre la BD que puede ser creado desde el caché, desde snapshost, SQLID…

Una vez tenemos definido el SQL Tuning Set (STS), podemos utilizarlo con:

  • SQL Tuning Advisor
    Obtiene recomendaciones para mejora el rendimiento del entorno, indices nuevos planes, etc..  de un sqlset (entre otras posibles entradas)
  • SQL Performance Analyzer
    Obtiene los planes de ejecución y tiempos, etc… de un sqlset (entre otras posibles entradas), se pueden comparar diferentes tasks, habiendo realizado cambios de parametrización de la BD, estructuras, etc…
  • SQL Access Advisor
    Obtiene recomendaciones de vistas materializadas o índices para mejorar el rendimiento.
  • Transportarlo a otra base de datos, para utlizarlo con los 3 paquetes anteriores en un entorno diferente.

Continue reading

Oracle espacio ocupado por tabla y objetos relacionados

En ocasiones debemos obtener un detalle suficiente del espacio ocupado por un tabla de la BD y sus objetos relacionados.Database_Icon_256

Para conocer el espacio ocupado por una tabla debemos acceder básicamente a:

  • dba_indexes, para obtener los nombres de los índices relacionados con la tabla.
  • dba_logs, aquí podemos conocer si existe algún segmento de tipo lob relacionado con la tabla.
  • dba_segments, finalmente obtenemos cada uno de los tamaños utilizando los datos anteriores

Por ejemplo, la tabla SCOTT.TABLE_TEST, la consulta sobre dba_indexes:

Continue reading

Compactado de tablas para reducir datafiles (Oracle)

Seguro que en más de una ocasión hemos eliminado registros de una tabla en grandes cantidades, quizás millones. Una vez hecho esto lo esperable sería una reducción del espacio ocupado en el tablespaces, pero esto no es así, las extensiones siguen existiendo pero libres para el uso de la tabla en cuestión, no las puede usar otra tabla.

Una vez eliminados los millones de registros, se ha de compactar la tabla para devolver espacio libre al tablespace, una vez hecho esto incluso podemos reducir el tamaño de los datafiles sin encontrarnos con la limitación  impuesta por el HIGH WATER MARK (tamaño máximo alcanzado  por los objetos dentro de un datafile).

Supongamos la tabla:

Continue reading

Oracle update undo, updates masivos que pueden generar problemas con el UNDO

No es la primera vez que me veo en la necesidad de ejecutar un DML que actualiza relamente muchos rows, esto puede ser un problema porque el tablespace UNDO no es infinito (ni debe serlo).

Recientemente he tenido que ejecutar un update:

Continue reading