Un tablespace en Oracle 19c es una unidad lógica de almacenamiento que agrupa uno o más archivos de datos físicos. Los tablespaces permiten a los administradores de bases de datos organizar y gestionar eficientemente los datos, lo que facilita tareas como el backup, la recuperación y el control de acceso.

¿Qué es un Tablespace?

  • Definición: Un tablespace se puede ver como un contenedor que almacena los datos de las bases de datos Oracle. Cada tablespace puede contener múltiples segmentos (como tablas, índices, y otros objetos de base de datos), y este puede estar respaldado por archivos de datos en el sistema de archivos o en un almacenamiento ASM (Automatic Storage Management).

¿Para qué sirve un Tablespace?

  1. Organización de Datos: Permite agrupar y organizar datos de manera lógica. Por ejemplo, se pueden tener tablespaces separados para diferentes aplicaciones o tipos de datos.
  2. Control de Espacio: Facilita la gestión del espacio en disco al permitir a los administradores asignar y controlar el uso de espacio de manera más eficiente.
  3. Aislación de Datos: Permite implementar políticas de backup y recuperación específicas para diferentes tipos de datos. Por ejemplo, un tablespace crítico puede respaldarse con más frecuencia que uno menos importante.
  4. Mejora del Rendimiento: Ajustando los tablespaces, se puede optimizar el rendimiento de la base de datos, equilibrando la carga entre múltiples discos duros.

Creación de un Tablespace

1. Crear un Tablespace en el Sistema de Archivos

Para crear un tablespace en un sistema de archivos, puedes utilizar el siguiente comando SQL en Oracle:

CREATE TABLESPACE nombre_tablespace
DATAFILE 'ruta/del/archivo/archivo01.dbf'
SIZE 100M
AUTOEXTEND ON
NEXT 10M
MAXSIZE UNLIMITED;
  • nombre_tablespace: El nombre que quieres asignar al tablespace.
  • DATAFILE: La ruta del archivo físico donde se almacenarán los datos.
  • SIZE: El tamaño inicial del archivo.
  • AUTOEXTEND: Permite que el archivo crezca automáticamente.
  • NEXT: Tamaño que se incrementará cada vez que se necesite más espacio.
  • MAXSIZE: Máximo tamaño que puede alcanzar el archivo.

2. Crear un Tablespace en ASM (Automatic Storage Management)

Para crear un tablespace en un entorno ASM, utilizarías un comando similar, pero especificando que el archivo está en un grupo de discos ASM.

CREATE TABLESPACE nombre_tablespace
DATAFILE '+nombre_grupo_disks/archivo01.dbf'
SIZE 100M
AUTOEXTEND ON
NEXT 10M
MAXSIZE UNLIMITED;
  • +nombre_grupo_disks: Es el nombre del grupo de discos ASM donde se almacenará el archivo de datos.

Ejemplo Completo

Supongamos que deseas crear un tablespace llamado USUARIOS:

  • En Sistema de Archivos:
CREATE TABLESPACE USUARIOS
DATAFILE '/data/oracle/USUARIOS01.dbf'
SIZE 200M
AUTOEXTEND ON
NEXT 20M
MAXSIZE 1G;
  • En ASM:
CREATE TABLESPACE USUARIOS  
DATAFILE '+DATA/USUARIOS01.dbf'   
SIZE 200M   
AUTOEXTEND ON   
NEXT 20M   
MAXSIZE UNLIMITED;

Para ver los tablespaces de una base de datos Oracle, existen varias vistas del diccionario de datos que pueden proporcionar información detallada. A continuación, te muestro algunos comandos SQL que puedes utilizar para listar los tablespaces y obtener información relevante sobre ellos.

Listar Todos los Tablespaces

Puedes usar la siguiente consulta para obtener una lista de todos los tablespaces en la base de datos:

SELECT tablespace_name, status, contents, partitioned
FROM dba_tablespaces;
  • tablespace_name: Nombre del tablespace.
  • status: Indica si el tablespace está en estado ONLINE o OFFLINE.
  • contents: Muestra el tipo de contenido (USERTEMPUNDO, etc.).
  • partitioned: Indica si el tablespace es particionado

Listar Tablespaces Activos

Si solo te interesa los tablespaces que están actualmente activos, puedes filtrar los resultados:

SELECT tablespace_name
FROM dba_tablespaces
WHERE status = 'ONLINE';

Detalles de los Datafiles Asociados a los Tablespaces

Para ver los archivos de datos asociados a cada tablespace, puedes ejecutar la siguiente consulta:

SELECT tablespace_name, file_name, bytes / 1024 / 1024 AS size_mb, autoextensible
FROM dba_data_files;
  • file_name: Nombre del archivo de datos.
  • bytes: Tamaño del archivo en bytes (convertido a MB en este caso).
  • autoextensible: Indica si el archivo es autoextendible o no.

Consultar el Espacio Usado y Libre en los Tablespaces

Para obtener información sobre la cantidad de espacio utilizado y libre en cada tablespace, puedes utilizar la siguiente consulta:

SELECT d.tablespace_name,
d.total_bytes / 1024 / 1024 AS total_mb,
d.free_bytes / 1024 / 1024 AS free_mb,
(d.total_bytes - d.free_bytes) / 1024 / 1024 AS used_mb
FROM (SELECT tablespace_name,
SUM(bytes) AS total_bytes,
SUM(NVL(free_bytes, 0)) AS free_bytes
FROM (SELECT tablespace_name,
bytes,
NULL AS free_bytes
FROM dba_data_files
UNION ALL
SELECT tablespace_name,
NULL AS bytes,
bytes AS free_bytes
FROM dba_free_space)
GROUP BY tablespace_name) d
ORDER BY d.tablespace_name;

Consultar Espacio en Tablespaces Temporales

Para ver los tablespaces temporales, utiliza la siguiente consulta:

SELECT tablespace_name, file_name, bytes / 1024 / 1024 AS size_mb
FROM dba_temp_files;

Notas Adicionales

En Oracle Database, hay varios tablespaces que se crean por defecto cuando se instala la base de datos. Cada uno de estos tablespaces tiene un propósito específico y se utiliza para diferentes tipos de datos y operaciones. A continuación, detallo los tablespaces predeterminados más comunes y la función de cada uno:

1. SYSTEM

  • Descripción: Es el tablespace que almacena los datos del diccionario de datos de Oracle. Aquí se encuentran los objetos de sistema que son esenciales para la operación de la base de datos, como las tablas de definición y las vistas del diccionario.
  • Uso: Fundamental para la operación de la base de datos. No se debe eliminar ni modificar su contenido.

2. SYSAUX

  • Descripción: Introducido a partir de Oracle 11g, este tablespace se utiliza como un tablespace auxiliar que contiene componentes adicionales de la base de datos que solían residir en el tablespace SYSTEM.
  • Uso: Almacena datos relacionados con funcionalidades adicionales, como Oracle Enterprise Manager, Advanced Queuing y muchas otras características. Ayuda a reducir el tamaño del tablespace SYSTEM.

3. UNDOTBS1 (Undo Tablespace)

  • Descripción: Este tablespace se utiliza para almacenar los datos de undo. Los segmentos de undo contienen información sobre las transacciones que han sido modificadas, lo que permite a Oracle deshacer cambios en caso de que se necesiten.
  • Uso: Es crucial para soportar la recuperación de transacciones y asegurar la consistencia de la base de datos. Oracle utiliza este tablespace para mantener la información necesaria para la recuperación y el manejo de transacciones.

4. TEMP

  • Descripción: Este tablespace temporal se utiliza para operaciones temporales de procesamiento de SQL, como clasificación y uniones que requieren espacio adicional.
  • Uso: Se usa principalmente para almacenar datos temporales que no necesitan ser almacenados permanentemente. Las sesiones utilizan este espacio para realizar operaciones que requieren más espacio que el que está disponible en la memoria.

5. USERS

  • Descripción: Este tablespace se crea a menudo como un tablespace predeterminado para los usuarios secundarios, permitiendo que los usuarios creen sus objetos.
  • Uso: Almacena objetos de usuario tales como tablas, índices, y otros tipos de datos. Permite a los usuarios trabajar en un entorno aislado de los datos del sistema.

6. EXAMPLE (opcional)

  • Descripción: En algunas instalaciones, se crea un tablespace llamado EXAMPLE, que se utiliza para almacenar las tablas e índices que forman parte de ejemplos de demostración.
  • Uso: Proporciona un entorno para experimentar y aprender sobre Oracle, incluye datos de ejemplo y sus estructuras asociativas.

Estos tablespaces predeterminados son fundamentales para el funcionamiento de una base de datos Oracle. Cada uno tiene un rol específico y es importante comprender su propósito para gestionar correctamente la base de datos y optimizar su rendimiento.

Si necesitas más detalles sobre alguno de estos tablespaces o cualquier otro tema relacionado, ¡no dudes en preguntar!

Asegúrate de tener los privilegios necesarios para acceder a las vistas de diccionario de datos como DBA_TABLESPACESDBA_DATA_FILESDBA_FREE_SPACE, etc. Si no tienes estos privilegios, puedes utilizar las vistas USER_TABLESPACES y USER_DATA_FILES, que muestran solo la información sobre tus objetos.

Deja un comentario

Tendencias