Si se quiere desparticionar una tabla muy grande, en donde sacar un export y volverlo a subir con la estructura de la tabla sin particiones se vuelve un método demasiado lento, podemos utilizar los siguientes pasos para que el proceso se haga mucho más rápido:
Paso 1.- Primero se debe hacer un merge de las particiones existentes en una sola, esto se logra con la siguiente sentencia:
sql> ALTER TABLE tabla_particionada MERGE PARTITIONS part1, (part2,part3) INTO ultima_particion;
Para saber el nombre de las particiones puede utilizar la sentencia que se detalla a continuación:
sql> SELECT PARTITION_NAME FROM USER_TAB_PARTITIONS WHERE TABLE_NAME=tabla_particionada;
Consultar el número de registros existentes actualmente en la tabla para una posterior comprobación. (select count(*) from tabla_particionada)
Paso 2.- Crear la tabla con un nombre temporal (tabla_desparticionada) y sin particiones.
Paso 3.- Pasar los datos de la tabla particionada a la nueva tabla creada sin particiones:
sql> ALTER TABLE tabla_particionada EXCHANGE PARTITION ultima_particion WITH TABLE tabla_desparticionada INCLUDING INDEXES WITHOUT VALIDATION;
Paso4.- Comprobar que la tabla creada sin particiones (tabla_desparticionada) tiene ahora el mismo número de registros que tenía antes la tabla particionada. Esta última debería tener ahora 0 registros como consecuencia de la migración. Si se migraron correctamente los registros, se deberá finalmente borrar la tabla particionada (verificar antes dependencias con otros objetos) y renombrar a la tabla sin particiones con el nombre original.
Paso 5.- Renombrar la tabla:
sql> ALTER TABLE tabla_desparticionada RENAME TO nuevo_nombre;
jueves, 20 de noviembre de 2008
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario