Como mover un indice de tipo LOB a un tablespace diferente

La sintaxis para mover un índice de un tablespace a otro se realiza de la siguiente manera:

alter index OWNER.INDEX_NAME rebuild tablespace TABLESPACE_DE_DESTINO;

Para calcular cuánto espacio se necesita disponible para mover este segmento de tipo índice, se puede utilizar la siguiente consulta:

select sum(bytes)/1024/1024 "Tamaño_en_MB"
from dba_extents
where segment_name ='INDEX_NAME';


Pero para los índices de tipo LOB que están asociados a una columna de la tabla que fue creada con este segmento es necesario utilizar la siguiente consulta para determinar que índice debemos mover:

select 'alter table '||owner||'.'||table_name||' move '||chr(10)|| 'LOB ('||column_name||') store as '||'(tablespace TABLESPACE_DE_DESTINO);'
from dba_lobs
where owner ='ESQUEMA_A_MOVER';


Output:

alter table OWNER.TABLE_NAME move lob (COLUMNA_DE_TIPO_LOB) store as (tablespace TABLESPACE_DE_DESTINO);

Si no es utilizado este método para mover el índice de tipo lob al nuevo tablespace, Oracle nos entrega el siguiente error:

ORA-02327: cannot create index on expression with datatype LOB

VIVA LINUX!!!!
Alberto Silva Gallardo.

Comentarios

Publicar un comentario

Entradas populares de este blog

Buscar la sesión por PID y ver la query SQL en Oracle

Eliminar procesos MySQL que están en estado SLEEP por determinado tiempo