Me gustaría saber si eliminar el índice de Oracle y volver a crearlos planteará problemas de datos si se supone que se realizan durante el tiempo de inactividad programado.

Recientemente descubrió que algunos índices estaban estacionados en un espacio de tabla incorrecto, me gustaría corregirlo soltando el índice y volviéndolo a crear en el espacio de tabla correcto.

Por favor, amablemente asesorar.

2
Oh Chin Boon 12 abr. 2012 a las 11:34

1 respuesta

La mejor respuesta

No veo ningún problema con eso, pero en lugar de soltar / crear, también puede usar la sintaxis a continuación:

alter index <INDEX_NAME> rebuild tablespace <TABLESPACE_NAME>

Para abordar lo que preguntó en el comentario a continuación, el alter index rebuild debería ser más rápido. La razón de esto es que cuando sueltas el índice y lo vuelves a crear, el árbol de índices se construirá a partir de la propia tabla. Pero con alter index rebuild, Oracle lee el índice en sí, lo que resulta en una menor cantidad de E / S.

8
Erkan Haspulat 12 abr. 2012 a las 11:52
Gracias. ¿Pensará que un índice alterno será mucho más rápido que un drop + create?
 – 
Oh Chin Boon
12 abr. 2012 a las 11:44
@ChinBoon, debería ser aproximadamente el mismo período de tiempo. Sin embargo, al reconstruir, bloquea la tabla afectada para que no se pueda alterar o violar cualquier restricción de integridad como en el caso de eliminar / crear.
 – 
Ben
12 abr. 2012 a las 11:49
Gracias una vez más. Una vez más, ¿cómo puedo saber que la reconstrucción ha finalizado? ¿Espero a que vuelva la instrucción SQL?
 – 
Oh Chin Boon
12 abr. 2012 a las 17:37
Sí, deberías esperar a que vuelva.
 – 
Erkan Haspulat
12 abr. 2012 a las 17:51