OracleMania en Español Volumen 1 - Page 24

rincon del dba

dba

24

Manejo de Índices en una operación exchange partition

Por

Durante mucho tiempo se ha visto a muchos DBAs utilizar la operación “EXCHANGE PARTITION” la cual nos facilita el intercambio de los datos desde una tabla particionada hacia una tabla no particionada. Esta operación es muy útil pues evitamos trasladar la información utilizando “INSERT AS SELECT” la cual, si bien podemos evitar que genere datos redo, no podemos evitar que el proceso sea tan largo como datos tenga la tabla fuente. Es aquí donde el “EXCHANGE PARTITION” toma ventaja al intercambiar los metadatos a nivel del diccionario de datos entre las dos tablas, de esta manera los datos en sí no son transportados, por lo tanto no generamos datos redo y al mismo tiempo la operación dura tan solo segundos. La sintaxis de esta

operación es la siguiente:

De la mano de esta operación de intercambio de partición tenemos el reto de manejar adecuadamente los índices de dichas tablas, este es un tema que si bien ya está bien documentado, dicha documentación ha sido en su mayoría trabajada separadamente. Por ejemplo, existen algunas notas de Metalink que describen la causa y la solución para un determinado error y en otras notas se detallan otros errores relacionados a los índices durante la operación “EXCHANGE PARTITION”. Todos estos errores surgen cuando se realiza un intercambio de partición entre tablas por lo cual deberían de ser explicados unificadamente. Esta fue la idea principal que se usó para crear este artículo, un artículo donde se consoliden los conceptos que se deberían de tomar en cuenta antes de realizar la operación de intercambio, de esta manera estaremos siento proactivos y si hay alguna modificación que se deba hacer sobre los índices, que dicha modificación sea realizada proactivamente y no reactivamente afectando las ventanas de mantenimiento o las horas

funcionales del negocio.

Antes de entrar de lleno a nuestro artículo, primero es necesario saber algunos conceptos

fundamentales sobre los índices.

Cada tabla particionada puede tener dos clases de

índices:

• Índice Local: Es aquel índice que por cada partición que tenga la tabla, debe haber una partición también para el índice. Es una relación de uno a uno entre las particiones de la tabla y las particiones del índice. Este tipo de índices pueden ser utilizados en

operaciones a nivel de particiones.

• Índice Global: Es aquel índice que para una de sus particiones corresponde varias particiones de la tabla. Estos índices también pueden ser particionados y no pueden ser utilizados en

operaciones a nivel de particiones.

Así también existe otra clasificación igual de importante, pero que en este artículo lo tomaremos como una sub categoría de la anterior.

• Índice prefijado: Es aquel índice que en la columna más a la izquierda que lo compone es la columna que ha sido utilizada para particionar la tabla, es decir, es la columna que se usa en la llave del

particionamiento de la tabla.

• Índice no prefijado: Es aquel índice que está compuesto por columnas que no contienen la llave de particionamiento de la tabla, o que sí la contiene, no la contiene en el lugar más a la izquierda.

Una vez establecidos estos conceptos, ya se podrá comprender los siguientes ejemplos. Entremos de

lleno a nuestro artículo, ¡Bienvenidos!