ALTER TABLESPACE … DROP DATAFILE…

Yo creo que a todos nos habrá pasado: por necesidades de espacio -o al crear un TABLESPACE- añadimos un DATAFILE… para comprobar segundos después que dicho DATAFILE no nos hacía falta, o lo hemos incorporado al TABLESPACE que no era.

Esto siempre ha sido un engorro porque la única solución era crear de nuevo el TABLESPACE, ya que no había manera de eliminar un DATAFILE de un TABLESPACE una vez agregado. Otros optaban por reducir el tamaño de dicho DATAFILE y ‘aprender a vivir con ello’, como quien aprende a vivir con un molesto grano en…

Pero en la versión 10 apareció la muy útil sentencia ALTER TABLESPACE … DROP DATAFILE… que por primera vez nos permite eliminar DATAFILES de un TABLESPACE. Hay que tener en cuenta que estos DATAFILES deben estar vacíos (lo cual es lógico) pero al menos nos permite enmendar errores que de otra forma nos llevarían a tener que andar trasteando con TABLESPACE y DATAFILES, con lo que ello supone (No hace falta ni decir la cantidad de trabajo y quebraderos de cabeza que se ahorran así en entornos de producción cuando los errores arriba indicados se producen…).

SQL*Plus: Release 10.2.0.1.0 - Production on Jue Ago 23 09:25:24 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Introduzca el nombre de usuario: carlos@db01.xxxxxx
Introduzca la contraseña:

Conectado a:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

carlos@db01.xxxxxx> SELECT TABLESPACE_NAME
  2 FROM DBA_TABLESPACES;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
TBS_CCCCC2007_DAT01
TBS_CCCCC2007_IDX01
TBS_DDDDD2007_DAT01
TBS_DDDDD2007_IDX01
TBS_IIIII2007_DAT01
TBS_IIIII2007_IDX01

11 filas seleccionadas.

carlos@db01.xxxxxx> ALTER TABLESPACE TBS_IIIII2007_DAT01 ADD DATAFILE
  2 'C:\DATABASES\DB01\DATAFILES\TBS_IIIII2007_DAT01_FILE02.DBF' SIZE 10M;

Tablespace modificado.

carlos@db01.xxxxxx> ALTER TABLESPACE TBS_IIIII2007_DAT01 DROP DATAFILE
  2 'C:\DATABASES\DB01\DATAFILES\TBS_IIIII2007_DAT01_FILE02.DBF';

Tablespace modificado.

carlos@db01.xxxxxx>

Saludos.

Carlos.

18 respuestas a ALTER TABLESPACE … DROP DATAFILE…

  1. Alejandro Garcia dice:

    Hola buena tarde!!!
    Disculpa, soy nuevo en esto. Como me puedo asegurar de que el datafile este vacio? Como puedo asegurarme que no llegara alguna informacion en el momento que lo este eliminando?
    Que riesgos tendria si lo elimino y contiene informacion?
    De antemano muchas gracias y disculpa las molestias.

    Alex.

  2. carlosal dice:

    Si el DATAFILE no está vacío (esto también incluye si ha ‘llegado información’ y previene los ‘riesgos’) aparecerá un error al hacer el DROP.

    Saludos.

    Carlos.

  3. LEON SOUL dice:

    que tal, soy nuevo en esto del db2, una pregunta el estado de un tablespace es 0x4000, no esta asociado a nada, en la ruta de su contenedor no tiene nada, pasa algo si lo borro?????

  4. carlosal dice:

    No sé si has leído de qué va este blog y de qué va esta entrada. Te lo digo yo: Oracle.

    No tengo ni idea de DB2, ni planes para aprender a corto plazo.

    Saludos.

    Carlos.

  5. Ana dice:

    Hola, una consulta, tengo un tablespace con 2 datafiles, uno de los datafiles ha sido mal creado y necesito eliminarlo pero tiene datos, como puedo hacerlo?

  6. carlosal dice:

    Creas un nuevo TABLESPACE. Mueves todas las tablas que haya en el antiguo al nuevo con ALTER TABLE… MOVE y finalmente borras el tablespace malo.

    Saludos.

    Carlos.

  7. Cristian dice:

    Hola Carlos

    Tengo una base de datos oracle 10g sobre windows 2003 (la cual noto mas inestable que otras versiones sobre otras plataformas). Alguien creo un tablespace que era de otra base, despues bajo la mia, y la volvio a crear en la base correcta. cuando intento levantar mi base tira error: ORA-01157:
    no se puede identificar/bloquear el archivo de datos 8 – consulte el archivo de rastreo del DBWR
    ORA-01110: archivo de datos 8:
    ‘C:\ORACLE\PRODUCT\10.2.0\DB_1DATABASE\CLEARINGIDX_1M’.

    como no puedo abrir la base de datos, no puedo dropear el tablespace erroneo. hay forma de hacerlo?

    Gracias

    • carlosal dice:

      >>”como no puedo abrir la base de datos, no puedo dropear el tablespace erroneo. hay forma de hacerlo?”

      Montando (MOUNT) la instancia sin abrir (OPEN) la base de datos.

      Saludos.

      Carlos.

      • Cristian dice:

        Carlos

        Hice lo siguiente:
        Shutdown
        Startup nomount (y trate de dropear el TB pero dice que la base no esta montada)
        alter database mount (y volvi a tratar pero dice que la base no esta abierta)
        alter database open (y volvi a tratar pero no abre porque no encuentra el datafile que falta).

        lo intenté y no pude, me pide que abra la base, cosa que no puedo hacer. Imagino que debe haber una forma de dropear un TB sin abrir la base como me pasa a mi.

        Gracias

  8. PATRICK dice:

    ESTIMADOS:

    Como puedo hacer para ingresar a mi base de datos sin ningún inconveniente, ya que el tablespace fue eliminado manualmente desde el directorio. Con los pasos que indicó líneas arriba solamente se logra montar la B.D., más no eliminar el DATAFILE y el TABLESPECE, debido a que no existe.

    Esperando su pronta respuesta.

    Gracias.

    Atte.,

    Patrick

  9. PATRICK dice:

    Carlos:

    Después de haber ejecutado la sentencia 4.- DROP TABLESPACE tablespace pocho INCLUDING CONTENTS; muestra el mensaje “ORA-01109 base de datos sin abrir”.

    Esperando su pronta respuesta.

    Gracias de antemano.

  10. PATRICK dice:

    Carlos:

    Después de haber ejecutado la sentencia del punto 4, muestra el siguiente mensaje “ORA-01109 base se de datos sin abrir”.

    Esperando su pronta respuesta.

    Gracias de antemano.

    • carlosal dice:

      El punto 3 hace un ALTER DATABASE OPEN, por lo que si no se ha abierto es que ha habido algún error.

      Si te has cargado los ficheros ‘desde el directorio’ (me imagino que con rm) has metido la pata hasta el fondo…

      Saludos.

      Carlos.

  11. Antonio dice:

    cual es la configuracion mas optima para crear un tablespace y datafile que debe almacenar millones de registros???

    A la espera de su pronta respuesta, me despido

    JALinares

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

A %d blogueros les gusta esto: