Desfragmentar tablas

Soy aprendiz de Oracle y se me ha presentado una duda: ¿Hay alguna forma para desfragmentar tablas Oracle? Se que a nivel de tablespaces se usa la opción "coalesce" en "alter tablespace".
1

1 respuesta

Respuesta
1
Soy LUMOSA...
Mira, exporta la(s) tablas y luego las importas al tablespace especifico así:
1. exp usr/password file=exp.dmp tables=tabla1,tabla2,..tablan log=exp.log
2. Borra las tablas de su origen asi:
SQL>Drop table tabla1;
SQL>Drop Table tabla2;
Es importante verificar si se cuenta con espacio suficiente para la reubicacionde las tablas.
3. Ejecutar un import del archivo creado en el export con el parámetro INDEXFILE=Y para obtener la sentencia de creación de las tablas así:
imp usr/paswword file=exp.dmp INDEXFILE=sentencia.sql FULL=Y
4. Edita el archivo resultante (sentencia.sql) para modificar la clausula tablespace (si requieres las tablas en otro tablespace de lo contrario dejalas en el mismo tablespace).
Es necesario quitar los comentarios "REM" de cada linea de dicho archivo.
5. Ejecuta el archivo editado (sentencia.sql) para la creación de la estructura de la tabla,
6. Importar el archivo original (exp. Dmp) con el parámetro IGNORE=Y para actualizar las tablas con todos los registros y cararcteristicas.
imp usr/paswword file=exp.dmp IGNORE=Y tables=tabla1,tabla2,...
7. Verifica que se inserten correctamente los registros de las tablas y se actualicen sus constraints.
ESA ES LA FORMA COMO PUEDES DE FRAGMENTAR TABLAS, pero también puedes hacerla por usuario.
Existen diferentes motivos para regrar tablas algunos de ellos son: Desea cambiar los parámetros de almacenamiento, eliminar fragmentación (que es tu caso), cambiar el tablespace de donde esta ubucada o cambiar su propietario.
Por tanto hay dos formas de hacerlo:
1. Usando EXPORT/IMPORT como te explique antes.
2. Con el comando CREATE TABLE AS SELECT, el cual te lo voy a explicar:
CREATE TABLE AS SELECT
Aqui la idea es crear una tabla con el comando:
CRAETE TABLE tabla_copia AS SELECT * FROM tabla_original;
Después de borrar la tabla original y ejecutar la misma instrucción pero cambiando la tabla tabla_copia por la original y viceversa.
Por favor, califica y cierra tu pregunta y me da gusto haberte servido
Cordialmente,
lumosa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas