Malabarismo en Oracle


Tengo que copiar unos 30 millones de registros de una tabla en la que hay unos 200 millones a otra tabla y obtuve un error: no se puede agrandar el índice porque no hay espacio en el tablespace. La base es Oracle 9.2

Para solucionarlo tuve que mover todas las tablas e índices de ese tablespace a otros tablespaces que tuvieran lugar. Así liberé 3 GB.

Luego saqué de la tabla destino las columnas que no necesitaba así sólo traeré las realmente indispensables.

Espero que me alcance el lugar porque si no tendré que llamar al DBA.

Así se puede ver el espacio libre en cada tablespace

select tablespace_name, trunc(sum(bytes) / (1024 * 1024)) as “MB Libres”
from user_free_space
group by tablespace_name

Para mover todas las tablas de un tablespace a otro hice un script SQL que me generó las sentencias.

select ‘ALTER TABLE ‘|| table_name ||’ MOVE TABLESPACE TABLESPACE_LIBRE;’ as query
from user_tables
where tablespace_name = ‘TABLESPACE_LLENO’

Y lo mismo para los índices.

select ‘ALTER INDEX ‘|| index_name ||’ REBUILD TABLESPACE TABLESPACE_LIBRE;’ as query
from user_indexes
where tablespace_name = ‘TABLESPACE_LLENO’

Anuncios

Un pensamiento en “Malabarismo en Oracle

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s