Arquitectura de almacenamiento en Oracle: segmentos, bloques y tablespaces
Resumen
El documento describe las estructuras internas de almacenamiento de una base de datos Oracle: segmentos, extents, bloques de datos, dirty blocks y tablespaces. También explica la estructura interna de un bloque de datos y cómo se gestionan los espacios libres. Es un repaso útil para entender cómo se organiza físicamente la información en Oracle.
Puntos clave
- Un segmento está formado por n extents y se define dentro de un tablespace; los tipos principales son datos, temporales, índice y rollback (undo).
- Un extent es el nivel lógico inmediatamente inferior a los segmentos y consta de bloques continuos de datos.
- El bloque es la unidad mínima de almacenamiento y de E/S dentro de un datafile, y su tamaño lo define el administrador.
- Los dirty blocks son bloques modificados en el Buffer Cache que aún no se han escrito en disco.
- El tablespace System contiene el diccionario de datos y las funcionalidades PL/SQL almacenadas; el tablespace Temporal guarda datos de operaciones temporales y el Undo, los segmentos de deshacer.
- Un bloque se compone de encabezado, directorio de tablas, directorio de filas y espacio libre, gestionado mediante PCTFREE y PCTUSED.
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.
Descargar
PDF Word HTMLPreguntas frecuentes
¿Qué es un dirty block en Oracle?
Es un bloque de datos que ha sido modificado en la memoria caché (Buffer Cache) y que todavía no ha sido escrito en el disco.
¿Para qué sirve el tablespace Undo?
Al ejecutar una sentencia DML se asigna un segmento de undo dentro de este tablespace, que es fundamental para la recuperación y para garantizar la consistencia de lectura.
¿Qué función cumplen los parámetros PCTFREE y PCTUSED?
Gestionan el espacio libre del bloque: el espacio se maneja hasta que la información alcanza un 80 % (PCTUSED) y siempre queda un 20 % libre (PCTFREE) como medida de seguridad para la integridad de los datos.
Ponte a prueba
Tarjetas de repaso
Pulsa una tarjeta para ver la respuesta.
Test
Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.