Muchas veces se necesita realizar la tarea de mover índices a otros tablespaces debido a la ganancia en el balanceo de carga (I/O) y la ganancia que esto produce cuando no tenemos una base de datos por ejemplo configurada con ASM o en versiones antiguas de base de datos como Oracle8i y Oracle9i.
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';
Para los índices de tipo LOB que están asociados a una columna de la tabla, la cual fue creada con este tipo de 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.
No comments:
Post a Comment