Cómo cambiar de Tablespace los índices de un usuario

A veces es necesario cambiar todos los índices de un usuario a un tablespace espécífico de índices. Esto era muy importante en versiones 7, 8 y 9 de Oracle.  Una manera sencilla de hacerlo es desde sqlplus.

La idea es hacer un script que genere otro script con la sentencia sql que permita hacer el cambio. Sería como sigue …

Creamos un fichero llamado alter_ind_ts.sql y dentro copiamos el siguiente contenido:

$ vi alter_ind_ts.sql

Copiamos lo siguiente dentro …

spool alter_ind_ts_usuario.sql
set heading off
set linesize 180
select 'alter index '||owner||'.'||index_name||' rebuild tablespace <Poner_tablespace_destino>;'
from dba_indexes
where owner = '<nombre_usuario_propietario_indices>'
/
spool off

Posteriormente ejecutamos desde sqlplus conectados como system por ejemplo el script alter_ind_ts.sql :

SQL> start alter_ind_ts.sql;

Esto nos generará el script alter_ind_ts_usuario.sql que después de “recrearlo”, es decir, quitar la línea del final donde nos indica las filas devueltasy ponerle un “spool” al inicio del fichero y al final para que nos guarde el resultado de la ejecución del script. Podremos ejecutarlo posteriormente desde el mismo sqlplus y nos realizará el cambio de tablespace de los índices del usuario especificado.

SQL> start alter_ind_ts_usuario.sql ;

This entry was posted in Administración Oracle and tagged , . Bookmark the permalink.

Deja un comentario