INGRESAR

REGISTRARSE
Buscador

Gestión de tablespaces en oracle

2024-04-05

Tablespaces

Un tablespace es un almacén lógico de los ficheros de la base de datos.

Todas las bases de datos tienen como mínimo los siguientes tablespaces y son generados al crear la BD:

  • Un tablespace SYSTEM.
  • Un tablespace SYSAUX.
  • Un tablespace Temporal.
  • Un tablespace Undo .

Se pueden crear desde:

  • EM (Enterprise Manager).
  • Con la sentencia SQL CREATE TABLESPACE .

Tablespaces con em

Al consultar un tablespace con el EM se puede ver la siguiente información:

  • Tamaño asignado: Informa del tamaño actual de todos los datafiles asociados al tablespace.
  • Espacio usado: Informa del espacio ocupado por los segmentos del tablespace que no pueden ser usados.
  • Espacio asignado libre: Informa del espacio libre que se puede utilizar.
  • Estado: Informa si el tablespace está Online (los objetos son accesibles), u Offline (los objetos no son accesibles).
  • Datafiles: Informa del número de ficheros de datos que componen el tablespace.
  • Tipo: Los tablespaces pueden ser de varios tipos.
  • Permanente: Los segmentos que contienen son permanentes.
  • Temporal: Los segmentos que contienen son temporales y se eliminan con el cierre de la base de datos.
  • Undo: Este tipo de tablespaces contienen segmentos undo “deshacer” y solo pueden ser gestionados por el sistema).

Tablespaces con sql

La información referida a los tablespaces también se puede obtener usando las siguiente vistas del DD:

  • DBA_TABLESPACES.
  • DBA_DATA_FILES.
  • DBA_SEGMENTS.
  • DB_FREE_SPACE.

Comando para trabajar con los tablespaces

CREAR UN TABLESPACE Y SU FICHERO DE DATOS:

  • Cuando se crea un tablespace se puede indicar si el fichero de datos tendrá un tamaño fijo o si puede ir creciendo hasta llegar a un tamaño máximo.
  • CREATE TABLESPACE ...: Permite crear un tablespace.
  • DATAFILE: Indica la ruta donde se va a crear el datafile (fichero de datos).
  • SIZE n[M|G|T]: Indica el tamaño del fichero.
  • n: Es un número que indica el nuevo tamaño.
  • M: Es la unidad de MEGAS.
  • G: Es la unidad de Gigas.
  • T: Es la unidad de Teras.
  • AUTOEXTEND ON NEXT nM MAXSIZE nM: Indica que el fichero de datos puede aumentar de tamaño de forma automática sin llegar a superar tamaño máximo indicado.
  • EXTENT MANAGEMENT LOCAL AUTOALLOCATE: Indica que la gestión será local y el espacio se auto asignará para el crecimiento.
  • SEGMENT SPACE MANAGEMENT AUTO: Indica que la gestión de segmento de espacio se realizará de forma automática.

Ejemplo:

  • CREATE TABLESPACE TRABAJO
  • DATAFILE "/HOME/DB11G/ORADATA/TRABAJO_01.DBF "
  • SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 100M
  • EXTENT MANAGEMENT LOCAL AUTOALLOCATE
  • SEGMENT SPACE MANAGEMENT AUTO

Las modificaciones que se pueden realizar a un tablespace son:

  • Renombrarlo.
  • Ponerlo en estado Online y offline.
  • Marcarlo como lectura-escritura o solamente lectura.
  • Cambiar su tamaño.
  • Cambiar los de umbrales de alertas.

RENOMBRAR UN TABLESPACE Y EL FICHERO DE DATOS:

  • En Oracle no es obligatorio que el tablespace y sus ficheros de datos tengan el mismo nombre, por lo que es posible cambiar el nombre del tablespace y no el de sus ficheros de datos.
  • Para cambiar el nombre del tablespace no es necesario que este en OFFLINE, pero si se quiere cambiar el nombre de un fichero de datos si es obligatorio que el tablespace si este en estado OFFLINE.

Se puedo consultar las siguientes vistas para tener información:

  • V$TABLESPACE.
  • V$DATAFILE.

Permite modificar el nombre de los tablespaces:

  • ALTER TABLESPACE nombre_actual RENAME TO nombre_nuevo;

Todos los tablespaces tienen asignado uno o varios ficheros de datos, cuando se cambia el nombre de un tablespace no se cambia el nombre de sus ficheros de datos, para ello hay que usar este comando.

ALTER DATABASE RENAME FILE ‘ruta/nombre_fichero.dbf’ TO ‘ruta/nombre_fichero.dbf’;

Permite cambiar el estado del tablespace a online:

  • ALTER TABLESPACE nombre_actual ONLINE .

Permite cambiar el estado del tablespace a offline:

  • ALTER TABLESPACE nombre_actual OFFLINE [NORMAL | IMMEDIATE | TEMPORARY].
  • NORMAL: Es la opción por defecto, fuerza un checkpoint para todos los ficheros de datos del tablespace. Cada buffer sucio en el Cache Buffer de la Base de Datos que contenga un bloque de estos tablespaces será escrito en su fichero de datos, y entonces el tablespace y los ficheros de datos se pasaran a offline.
  • TEMPORARY: El estado del tablespace pasará a offline aunque exista alguna condición de error.
  • IMMEDIATE: El estado del tablespace pasará inmediatamente a offline, pero requerirá una recuperación cuando vuelva a pasar al estado online ya que no se pasarán los datos del cache buffer de la base de datos al fichero de datos, por lo que los datos se corromperán. Esta recuperación se producirá aplicando los vectores de cambio del redo log.
  • PASAR UN TABLESPACE A LECTURA O LECTURA/ESCRITURA

El tablespace pasa al estado solo lectura:

  • ALTER TABLESPACE nombre_actual READ ONLY

El tablespace pasa al estado lectura/escritura:

  • ALTER TABLESPACE nombre_actual READ WRITE;

MODIFICAR EL TAMAñO DE UN TABLESPACE

A un tablespace se le puede cambiar el tamaño de dos formas diferentes:

  • Añadiendo archivos de datos al tablespace.
  • Cambiando el tamaño de los archivos de datos existentes.
  • Si al crear el tablespace se definió como AUTOEXTEND se modificaran automáticamente.

Para cambiar el tamaño de un fichero de datos:

  • ALTER DATABASE DATAFILE nombre-fichero-datos RESIZE n [M | G | T];

Para añadir un fichero de datos a un tablespace:

  • ALTER TABLESPACE nombe_tablesspace
  • ADD DATAFILE ‘ruta/nombre_fichero.dbf’ SIZE n[M | G | T ];

Para que un tablespace sea autoextend:

  • ALTER DATABASE DATAFILE ‘ruta/nombre_fichero.dbf’
  • AUTOEXTEND ON NEXT n[M | G | T ] MAXSIZE n[M | G | T ];

BORRAR UN TABLESPACE

Cuando se borra un tablespace hay que tener en cuenta:

  • Si tiene datos.
  • Si solo se quiere borrar el tablespace.
  • Si se quiere borrar el tablespaces y sus ficheros de datos.

Permite borrar un tablespace:

  • DROP TABLESPACE nombre_tablespace [INCLUDING CONTENTS [AND DATAFILES] ]
  • DROP TABLESPACE: Si solo se usa esta opción, solo se puede borrar los tablespaces que no tengan datos, pero no borra los ficheros de datos asociados.
  • INCLUDING CONTENTS: Borra los tablespaces que tienen datos, pero no borra los ficheros de datos asociados.
  • AND DATAFILES: Borra el tablespaces y sus datafiles asociados.

Oracle manager files (OMF)

OMF se usa para eliminar la necesidad del DBA de tener conocimientos del sistema de fichero. La creación de archivos de base de datos puede ser totalmente automatizada y de esta forma no es necesario saber en la ruta que se debe crear los diferentes archivos.

Para activar OMF, simplemente hay que informar los siguientes parámetros de instancia:

  • DB_CREATE_FILE_DEST: Especifica una posición por defecto para todos los archivos de datos.
  • DB_CREATE_ONLINE_LOG_DEST_1: Estos tipos de parámetro específica una posición por defecto para el online redo log files.
  • DB_CREATE_ ONLINE _LOG_DEST_2
  • DB_CREATE_ ONLINE _LOG_DEST_3
  • DB_CREATE_ ONLINE _LOG_DEST_4
  • DB_CREATE_ ONLINE _LOG_DEST_5
  • DB_RECOVERY_FILE_DEST: Establece una ubicación por defecto para el archivo Redo Log Files y fichero backup.

Aunque estos parámetros estén informados, serán anulados y al usar el comando CREATE TABLESPACE, se especifica el nombre de los ficheros.

Umbrales de alerta

Oracle tiene unos mecanismos de alertar para indicar al DBA de ciertas situaciones peligrosas, como es cuando un tablespace supera un porcentaje de ocupación.

Una de las funciones del proceso MMON (Monitor de manejabilidad) es vigilar el espacio ocupado de los tablespace:

  • Cuando se supera el 85% de ocupación se lanza una alerta de advertencia.
  • Cuando se supera el 97%de ocupación se lanza una alerta crítica.

Para más información.