Browse Month: agosto 2011

Clustering Factor

Oracle toma las I/O por bloques. Por lo tanto la decisión del optimizador de realizar TABLE FULL SCAN  está influenciado por la cantidad de bloques accedidos, no de filas. Esto es conocido como index cluatering factor. Si los bloques contienen una fila, entonces, las filas y bloques accedidos son los mismos.

Por todo esto, el clustering factor es una característica muy importante para la toma de decisiones del CBO, mas concretamente, a la hora de elegir el coste asociado a una operación mediante un INDEX RANGE SCAN o un TABLE FULL SCAN.

Con esta característica podemos observar la ordenación del índice con los datos en la tabla. Una tabla con los datos mal ordenados tendrá un clustering factor alto o cercano al número de registros, lo cual llevará a que el CBO acceda a los datos mediante FULL TABLE SCAN. Por el contrario si los datos están bien ordenados en la tabla , tendremos un clustering factor bajo o cercano al numero de bloques de datos, y el CBO llevara a cabo un INDEX RANGE SCAN.

Cuando un índice puede ser usado, Oracle revisa la información del Clustering Factor del índice, el cuál le dice a Oracle el número de bloques que deben ser leídos para conseguir los datos necesarios por la condición de la query.

Evidentemente podemos ver que con un clustering factor bueno, reducimos el número de I/O lógicas requeridas.

Algo importante a tener en cuenta es que no vamos a reducir el clustering factor llevando a cabo un rebuild del índice, ya que el clustereing factor está asociado con la ordenación de los datos dentro de la tabla y no del índice. La única forma de cambiar esto es cambiar el índice o el orden de la tabla.

La siguiente query es un ejemplo de como podemos obtener el clustering factor, entre otros valores, del índice dado:

SELECT a.index_name, b.num_rows, b.blocks, a.clustering_factor
FROM dba_indexes a, dba_tables b
WHERE a.index_name = ‘nombre_indice’
AND a.table_name = b.table_name ;

Oracle Database 11g: Diagnostics

Dentro del top de las nuevas características de Oracle 11g no puede faltar uno de los mayores cambios en cuanto a estructura de ficheros de diagnostico (alertas, errores, …) y forma de administrarlos. A continuación presentaré la nueva estructura.

Cambios en los archivos de log;

  • Automatic Diagnostic Repository
  • $ORACLE_BASE/diag
  • alert.log
    • xml format
    • $ORACLE_BASE/diag/rdbms/orcl/orcl/alert/log.xml
    • adrci> show alert -tail
    AUTOMATIC DIAGNOSTIC REPOSITORY

    Continue Reading