Arquitectura de Almacenamiento en Oracle: Segmentos, Bloques y Tablespaces
Clasificado en Informática
Escrito el en
español con un tamaño de 3,5 KB
Estructuras Internas de la Base de Datos Oracle
Segmentos
Los Segmentos son estructuras lógicas de almacenamiento que se crean, por ejemplo, al ejecutar la sentencia CREATE TABLE. Un segmento está formado por *n* extents y se define dentro de un Tablespace. Existen cuatro tipos principales de segmentos:
- Datos: Su función es almacenar los datos de la tabla. Se crea durante la sentencia
CREATE TABLE. - Temporales: Almacenan datos utilizados por Oracle al realizar consultas, especialmente aquellas que tienen mayor complejidad.
- Índice: Se crea al ejecutar la cláusula
CREATE INDEXsobre una tabla. - Rollback (Deshacer): Se utiliza para la recuperación de puntos de transacción que han sido abortados (gestión de la consistencia de lectura).
Extents
Un Extent es el nivel lógico inmediatamente inferior a los segmentos. Consta de bloques continuos de datos.
Bloques de Datos (Data Blocks)
El Bloque es la unidad mínima de almacenamiento y de entrada/salida (I/O) dentro de un *datafile* (fichero de datos). Un bloque consta de varias partes y su tamaño puede ser variable, definido a discreción del administrador.
Dirty Blocks
Los Dirty Blocks son aquellos bloques que han sido modificados en la memoria caché (Buffer Cache) y aún no han sido escritos en el disco.
Tablespaces: Contenedores Lógicos de Almacenamiento
El Tablespace es la estructura lógica que organiza y conecta los segmentos con los ficheros de datos físicos (*datafiles*). Por defecto, siempre se crea un Tablespace inicial. Tienen un tamaño definido y es posible crear *n* Tablespaces. Su uso principal es proporcionar una estructura ordenada para facilitar la seguridad, la gestión y las labores de mantenimiento de la base de datos.
Tipos de Tablespace
- Tablespace System: Es creado por defecto. Contiene el diccionario de datos completo de la base de datos, además de todas las funcionalidades de PL/SQL almacenadas.
- Tablespace Temporal: Almacena las transacciones temporales que se generan en tiempo de ejecución (por ejemplo, durante operaciones de ordenación grandes).
- Tablespace Undo: Al ejecutar una sentencia DML (Data Manipulation Language), se asigna un segmento de *undo* dentro de este tablespace. Es crucial para la recuperación y para garantizar la consistencia de lectura.
Estructura Interna de los Bloques de Datos
Un bloque de datos típico en Oracle se compone de las siguientes partes:
- Encabezado (Header): Contiene información general y metadatos del bloque.
- Directorio de Tablas: Almacena información sobre las tablas que contienen filas dentro de este bloque.
- Directorio de Filas (Registros): Contiene la información de ubicación de cada fila almacenada en el bloque.
- Espacios Libres: Espacio reservado para la inserción de nuevos registros o para la actualización de registros existentes que requieran más espacio. Dichos espacios libres se manejan hasta que la información complete un 80 % (mediante el parámetro PCTUSED), siempre quedando un 20 % libre (mediante PCTFREE) como medida de seguridad para garantizar la integridad de la data.