Contacto

CONTACTAR EN CASO DE EMERGENCIAS Móvil +56963679637 - MAIL : CONSULTADBABLOCK@GMAIL.COM
- SOPORTE REMOTO EN BASE DE DATOS ORACLE - ORACLE LINUX - ORACLE VM SERVER - ORACLE RAC - ORACLE DATA GUARD
- UPGRADES - CAPACITACION

Friday, September 23, 2011

Como mover un indice de tipo LOB a un tablespace diferente

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: