Publicado el 14 de Enero del 2017
1.104 visualizaciones desde el 14 de Enero del 2017
238,8 KB
3 paginas
Creado hace 7a (11/07/2016)
Reconstrucción de índices - Administración de Oracle - Orasite.com
Escrito por Administrator
Jueves, 23 de Diciembre de 2010 18:25 -
1. Objetivo
Mostrar cómo reconstruir un índice existente en base de datos Oracle 10g y ver que índices
deberían de ser reconstruidos mediante un script automático.
2. Introducción
Es importante periódicamente examinar y determinar qué índices son susceptibles de ser
reconstruidos. Cuando un índice está descompensado puede ser porque algunas partes de
éste han sido accedidas con mayor frecuencia que otras. Como resultado de este suceso
podemos obtener problemas de contención de disco o cuellos de botella en el sistema.
Normalmente reconstruimos un índice con el comando ALTER INDEX.
3. ¿Cuándo sería conveniente reconstruir un índice?
Es importante tener actualizadas las estadísticas de la base de datos. Para saber si las
estadísticas se están lanzando correctamente podemos hacer una consulta sobre la tabla
dba_indexes y ver el campo last_analyzed para observar cuando se ejecutaron sobre ese
índice las estadísticas.
SELECT index_name, last_analyzed
FROM dba_indexed
WHERE table_owner=’nb_usuario’
Nota: Siendo nb_usuario el nombre del esquema del usuario para el que queramos validar las
estadísticas. (lanzar con usuario SYS)
Para actualizar las estadísticas utilizamos el paquete DBM_STATS. Podemos actualizar las
estadísticas de todos los objetos de un esquema de la siguiente forma:
Execute DBMS_STATS.gather_schema_stats(‘Esquema’);
Nota: Sustituimos esquema por el nombre de nuestro esquema a actualizar (lanzar con usuario
SYS)
Una vez actualizadas las estadísticas de los índices de la base de datos lanzamos la siguiente
consulta:
1 / 3
Reconstrucción de índices - Administración de Oracle - Orasite.com
Escrito por Administrator
Jueves, 23 de Diciembre de 2010 18:25 -
SELECT index_name, blevel,
DECODE(blevel,0,'OK BLEVEL',1,'OK BLEVEL',2,
'OK BLEVEL',3,'OK BLEVEL',4,'OK BLEVEL','BLEVEL HIGH') OK
FROM dba_indexes where table_owner='Propietario';
Nota: Sustituimos Propietario por el esquema o propietario que queramos verificar (lanzar con
usuario SYS)
Con esta sentencia obtendremos el nombre nombre del índice, el blevel y si es correcto.
INDEX_NAME
INX_CUENTA
INX_TRABAJO
INX_DINERO
BLEVEL
1
0
BLEVEL HIGH
OK
OK BLEVEL
OK BLEVEL
Los índices que deberíamos de reconstruir son los que en la columna ok aparecen como
BLEVEL HIGH.
Blevel (branch level) es parte del formato del B-tree del índice e indica el número de veces
que ORACLE ha tenido que reducir la búsqueda en ese índice. Si este valor está por encima
de 4 el índice debería de ser reconstruido.
4. Comando ALTER INDEX
Como hemos comentado esta sentencia se utiliza para cambiar o reconstruir un índice
existente en la base de datos.
Para poder ejecutar este comando el índice debe de estar en el propio esquema donde intentes
ejecutarlo o deberías de tener el privilegio alter any index. También tenemos que tener en
cuenta que para realizar la reconstrucción de un índice deberíamos de tener cuota suficiente
sobre el tablespace que lo lanzamos.
Para reconstruir un índice bastaría con lazar la siguiente sentencia
ALTER INDEX <index_name> REBUILD;
Para reconstruir una partición de un índice podríamos hacer lo siguiente
ALTER INDEX <index_name> REBUILD PARTITION <nb_partition> NOLOGGING;
Nota: En algunos casos cuando alguno de los índices tiene algún tipo de corrupción no es
2 / 3
Reconstrucción de índices - Administración de Oracle - Orasite.com
Escrito por Administrator
Jueves, 23 de Diciembre de 2010 18:25 -
posible reconstruirlo. La solución en este caso es borrar el índice y recrearlo.
3 / 3
Comentarios de: Reconstrucción de índices - Administración de Oracle - Orasite.com (0)
No hay comentarios