Oracle 10g: Resumir tablespaces transportando tablas e indices

Por el motivo que sea nos podemos encontrar que en nuestra base de datos Oracle tenemos muchos tablespace y para hacer un poquito de limpieza decidamos resumir los que estén duplicados. Entoces nos dirigimos a OEM y vemos una maravillosa liista de 50 tablespace con nombres sin sentido, algunos vacíos y otros por triplicado por que han llegado al tamaño que consideran máximo (en lugar de tres datafiles) etc etc... Llega el momento de ponerse manos a la obra.

Recordar que para ver el contenido de un tablespace nos podemos dirigir a Oracle Enterprise Manager y en la sección Administración>tablespaces marcar el que queramos, seleccionar en el desplegable Mostrar Dependencias y luego pulsando Ir. Luego veremos una segunda pestaña Dependientes. Ahí se muestran todos los objetos dependientes del tablespace (contenidos, vamos).

 

Ejemplo a) Solo índices

Nos encontramos que tenemos tres tablespaces IDX1, IDX2 e IDX3 que contiene índices creados por el mismo usuario APL y que son de la misma aplicación; lo que queremos hacer es resumirlos en un único tablespace IDX1. Para hacerlo podemos:

a)Hacer un export/import
b)Modificar indice por índice con la siguiente sql:
ALTER INDEX [indice] REBUILD TABLESPACE [nuevo tablespace]

La opción b) es una buena manera de hacerlo ya que aunque se tarde más el usuario seguro que no se dá ni cuenta.

 

Ejemplo b) Tablas e índices

Tenemos dos tablespace DAT1 y DAT2, y queremos mover las tablas de DAT2 a DAT1. Opciones:

a)Hacer un export/import
b)Modificar tabla por tabla (más sus índices*).
ALTER TABLE [tabla] MOVE TABLESPACE [nuevo tbspace];

ALTER INDEX [indice] REBUILD;

*En el caso de las tablas, al moverlas de un tablespace a otro hay que reconstruir los índices ya que quedan en estado “unusable”. Cualquier inserción posterior al traslado de tablespace sin la reconstrucción del indice producirá un error ORA.

 

 

Tambien mejorará el rendimiento

Pues sí, con este método se puede hacer limpieza y organizar los tablespaces, y también ayuda a mejorar el rendimiento, ya que la reconstrucción de los mismos elimina la fragmentación de datos que puediera existir.

Contenido relacionado

  • Que tal, tengo una duda en cuanto al manejo de los espacios de tablespace en oracle 10g.

    Mi duda es en cuanto al almacenamiento de segmentos en los datafile de un tablespace (TBS), un ejemplo tengo un TBS que consiste de 5 Datafiles, en estos tengo almacenados Tablas e Indices, me di a la tarea de mover los Indices a un tablespace distinto para mejorar las lectura y balancear las entradas a disco teniendo Tablas e indices por separado, hasta ahi no tengo problema. mi duda es ¿Que pasa con el espacio libre de los datafiles, se puede agrupar el espacio ocupado y usar los datafiles libres en otro tablespace?

     

    Saludos y gracias.

  •  Mi consulta es la siguiente. En el trabajo me pidieron crear un nuevo esquema con un nuevo tablespace con el motivo de usarlo como historico de un tablespace ya creado en otro esquema el cual contiene un gran numero de datafile y de gran tamaño. Queria saber si hay alguna manera de realizar esto. Seria moverlos o copiarlos de alguna manera en el nuevo tablespaces. Crear esquema y tablespaces esta solucionado, solo falta la accion de copiar o mover dinamicamente o estaticamente al nuevo tablespace "historico".

    Otra consulta es sobre Dataguard; hemos incursionado un poco en esto pero estamos un poco estancados. Si tienen algo de info encantado. Javier de Mendoza. 

     
  • Vamos a ver en tres sencillos pasos cómo crear un esquema de Oracle. Para poder crear un nuevo esquema de Oracle siguiendo estos pasos es necesario iniciar la sesión en la base de datos con un usuario con permisos de administración. Lo más sencillo es utilizar directamente el usuario SYSTEM:

    • Creación de un tablespace para datos y otro para índices. Estos tablespaces son la ubicación donde se almacenarán los objetos del esquema de Oracle que vamos a crear.

    Tablespace para datos, con tamaño inicial de 1024 Mb, y auto extensible

    CREATE TABLESPACE "APPDAT" LOGGING
    DATAFILE '/export/home/oracle/oradata/datafiles/APPDAT.dbf' SIZE 1024M
    EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

    Tablespace para índices, con tamaño inicial de 512 Mb, y auto extensible

    CREATE TABLESPACE "APPIDX" LOGGING
    DATAFILE '/export/home/oracle/oradata/datafiles/APPIDX.dbf' SIZE 512M
    EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

  • ORA-01555 Snapshot too old

    La base de datos de una compañia normalmente tiene que aguantar algunas transacciones largas y pesadas. Si la base de datos es Oracle, está recien instalada y poco manipulada esas transacciones y sus primeras ejecuciones tienen pocas probabilidades de éxito. Es entonces cuando acaba apareciendo el fatídico ORA-01555, alias "... snapshot to old".

    La gestión de consultas largas en Oracle viene limitada por el tamaño del tablespace de deshacer (undotbs). A mayor tamaño sera posible gestionar las transacciones más largas y pesadas. En Oracle 10g recien instalado el tamaño de este tablespace se reducido y uno no se suele dar cuenta hasta que falla la cosa.

    Si la versión es la 10 se puede modificar directamente desde Oracle Enterprise Manager (consola web) en el apartado de administración, "Gestión de Deshacer". Allí tenemos el tiempo de retención, el tamaño del tablespace y podemos usar también el asesor para ver el tiempo de retención posible en base al tamaño en mb del tablespace.

    Algo así:

  • SSIS: Solución a dos errores sin motivo aparente cuando insertamos datos en MySqlPor la razón que sea puede que tengamos que desarrollar un paquete de Microsoft Integration Services que nos mueva datos de cualquier origen a una tabla que se encuentra en una base de datos MySQL.
    La primera intención será hacerlo mediante una ADO.NET Destination y el provider de MySQL para la conexión. Si lo hacemos así para insertar los datos directamente, al crear el destino, seleccionar la conexión y luego seleccionamos la tabla aparecerá un error como el siguiente al comprobarlo todo con la vista previa o al intentar hacer las asignaciones.

    Este error se debe a al modo de compatibilidad sql ansi de la base de datos mysql donde intentamos cargar los datos. Para solventarlo debemos conectarnos al servidor de MySQL y cambiar la compatibilidad ansi de sql de la base de datos*...

     

 

 

 

Gestion del Conocimiento    |    Business Intelligence y Analítica    |     Bases de Datos    |      ERP     |      CRM      |     Tendencias tecnológicas