Muchas veces para disminuir la contención de disco por I/O es necesario tener los objetos en tablespaces diferentes ya sea para data y para indices, para esto primero que todo deben existir estos tablespaces (se crean con la sentencia CREATE TABLESPACE).

Para el ejemplo los tablespaces ya existen

Tablespaces para Tabla y para Indices

Para mover objetos que no correspondan al tipo de datos que se almacena en cada tablespace, por ejemplo hay tablas que están almacenadas en tablespaces de índices y viceversa se debe determinar primero que todo identificar estos objetos, y para esto podemos usar el script

select owner, tablespace_name,segment_type, count(segment_type)
from dba_segments
group by tablespace_name,owner,segment_type
order by 1 asc

Tabla de objetos
Tabla de Objetos

Si nos fijamos bien en la tabla anterior, podemos ver que hay índices que estan en el tablespace “DATOS“, “LABORATO_DATA” y “USERS” en donde se registran 2, 11 y 31 índices respectivamente.

Ahora bien estos índices encontrados anteriormente son candidatos para que sean movidos a su ubicación correcta, es decir al tablespaces de índices “LABORATO_INDEX

Para mover estos índices a otro tablespaces se deben identificar, se puede usar la siguiente query:

select owner, tablespace_name,index_name from dba_indexes
where owner='LABORATO'
and tablespace_name in ('DATOS', 'USERS','LABORATO_DATA')
order by 2,3 asc

OBS: Aca usé el nombre del Owner y los tablespaces que había determinado anteriormente, aca dependerá de cada instancia

El resultado de los índices es el siguiente:

Indices que deben ser movidos

Una vez que ya tenemos estos indices identificados, procedemos a generar la consulta que los va a mover.

Para mover un índice de un tablespace a otro se usa la siguiente consulta:

Alter index NOMBRE_INDICE rebuild tablespace TBS_DESTINO;

OBS: El movimiento de índices (sin mover tablas) se usa para mover estos objetos de ubicación. Si uno quiere mover tablas de un tablespace a otro, necesariamente deberá mover y recrear los indices asociados a las tablas, ya que sino estos índices quedaran en estado invalido

RSS Trackback URL Juan Jose Puga Germany | September 29, 2008 (4:59 pm)

Oracle, Bases de Datos, Query

4 Comments

Write a Comment»
  1. Hola Juanjo, tu crees que puedas poner los escrios de lo que mencionaste arriba:
    “Si uno quiere mover tablas de un tablespace a otro, necesariamente deberá mover y recrear los indices asociados a las tablas, ya que sino estos índices quedaran en estado invalido”
    Gracias

  2. Me alegro … recuerden que con el REBUILD pueden tambien disminuir el tamaño y acelerar las consultas…

    Mas información en:

    tahiti.iracle.com (documentación oficial)
    otn.oracle.com (soporte gratuito de oracle)
    support.oracle.com (soporte con licenciamiento de los productos, se puede solicitar escalamiento y ayuda en caso de ser necesario… si tienen su producto con la licencia al dia deben aprovecharlo )

    Saludos!!!!

  3. Muchas gracias por el post, me fue de gran ayuda.

  4. excelente post, me sirvió de mucho!

Write a Comment