Cómo mover tablas a un tablespace diferente y los índices a otro en Oracle 11G > 12C

Hola Amig@s,

Aquí les dejo dos sentencias muy útiles para cuando necesitamos organizar nuestro esquema en tablespaces específicos. Por ejemplo si queremos mover las tablas a un tablespace y los índices a otro, debemos hacerlo en dos pasos. Uno generará una salida con el comando específico para mover una tabla a otro tablespace, habrá un registro por cada tabla perteneciente al esquema que hemos indicado. La segunda sentencia hará lo mismo pero con los índices, que estos, aparte de moverlos, los regeneramos en el nuevo tablespace.


--mueve tablas
SELECT 'ALTER TABLE ESQUEMA.' || OBJECT_NAME ||' MOVE TABLESPACE '||' NUEVOTABLEPACE; '
FROM ALL_OBJECTS
WHERE OWNER = 'ESQUEMA'
AND OBJECT_TYPE = 'TABLE' and OBJECT_TYPE!='NUEVOTABLEPACE';


--mueve indices
SELECT 'ALTER INDEX ESQUEMA.' || OBJECT_NAME ||' REBUILD TABLESPACE '||' NUEVOTABLEPACEINDEX; '
FROM ALL_OBJECTS
WHERE OWNER = 'ESQUEMA'
AND OBJECT_TYPE = 'INDEX' and OBJECT_TYPE!='NUEVOTABLEPACEINDEX';

Donde:

ESQUEMA=Es el nombre del usuario al que pertenecen las tablas.
NUEVOTABLEPACE=Tablespace de datos destino (que debe existir antes de ejecutar el cambio).
NUEVOTABLEPACEINDEX=Tablespace de índices destino (que debe existir antes de ejecutar el cambio).

Una vez obtenida la salida, la ejecutamos recursivamente y se realizarán todos los cambios indicados a los nuevos tablespaces.

Espero que les resulte útil.
Salu2.
Share on Google Plus
    Blogger Comment

0 comentarios: