Estructura Lógica de Almacenamiento y Archivos de Diagnóstico en Oracle Database
Estructura lógica de almacenamiento
A nivel lógico, el elemento mínimo lo define el bloque de Oracle, el cual a su vez puede estar formado por varios bloques del sistema operativo. Con varios bloques de Oracle se forman las extensiones (extents), las cuales darán lugar a los segmentos (objetos de la base de datos: tablas, índices, etc.). Por último, los segmentos están contenidos en los tablespaces, los cuales componen la base de datos.
Tablespace
Un tablespace (TS) es utilizado para agrupar lógicamente los datos; no es un fichero físico y solo puede pertenecer a una base de datos. Además, puede contener uno o más datafiles. Al utilizar más de un datafile por tablespace, se pueden distribuir los datos sobre varios discos y balancear la carga de entrada/salida (E/S), mejorando así el rendimiento del sistema.
Los tablespaces se utilizan para mantener juntos los datos de usuarios o aplicaciones, facilitar su mantenimiento y optimizar las prestaciones del sistema. Al segmentar grupos de datos relacionados en tablespaces diferentes, se simplifican considerablemente las tareas de administración. El administrador los utiliza para:
- Controlar la creación de espacios en disco para los datos de la base de datos.
- Asignar cuotas específicas para los usuarios.
- Controlar la accesibilidad y disponibilidad de los datos.
- Realizar operaciones parciales de copia de seguridad y recuperación (backup/restore).
- Repartir los datos en varios discos físicos para optimizar el rendimiento.
Cuando se crean, se les asigna un espacio en disco que Oracle reserva inmediatamente. Si este espacio inicial se queda pequeño, Oracle puede gestionar el crecimiento dinámico de los ficheros sobre los que se asientan los espacios de tabla.
Como parte del proceso de creación de la base de datos, Oracle crea automáticamente, entre otros, los siguientes tablespaces:
- SYSTEM: Almacena todos los datos del sistema y el catálogo de la base de datos. No puede estar fuera de línea (offline).
- UNDO o ROLLBACK: Almacena los segmentos de rollback (deshacer).
- TEMP: Almacena las tablas y operaciones temporales.
- USERS: Contiene información personal y objetos propios de los usuarios.
- SYSAUX: Tablespace auxiliar de SYSTEM.
Bloques de datos
Un bloque de datos es la unidad mínima de almacenamiento de información de Oracle. A la hora de crear una base de datos, se debe indicar cuántos bloques del sistema operativo formarán un bloque de datos de Oracle.
Es crucial definir adecuadamente este valor, ya que una vez creada la base de datos no se puede modificar (excepto en procesos de migración). Se recomienda que su tamaño sea múltiplo del bloque del sistema operativo. Asimismo, el bloque de datos representa la unidad mínima de lectura y escritura en una base de datos Oracle.
Extensiones y segmentos
Las extensiones son una unidad lógica de almacenamiento formadas por un número determinado de bloques de datos contiguos. La agrupación de varias extensiones conforma un segmento. Los segmentos pueden ser de los siguientes tipos:
- Segmentos de datos: Almacenan los registros correspondientes a una tabla.
- Segmentos de índice: Mantienen los datos correspondientes a un índice definido en la base de datos.
- Segmentos de rollback (o undo): Permiten registrar temporalmente las acciones de una transacción para poder deshacerlas en caso necesario.
- Segmentos temporales: Se crean cuando una instrucción requiere espacio temporal de procesamiento y se destruyen al finalizar. Solo se recurre a ellos cuando no es posible realizar la operación en memoria.
De este modo, los datos de una tabla residen en un segmento de datos, integrado por una o más extensiones, las cuales a su vez se dividen en un conjunto de bloques contiguos.
Al crear un nuevo segmento, se crea obligatoriamente su primera extensión. A medida que el segmento crece, se le van asignando extensiones adicionales, reservando nuevo espacio en disco. Cuando se llenan todos los bloques de una extensión, el segmento solicita automáticamente una nueva para continuar alojando información.
La razón principal de esta jerarquía es minimizar el desperdicio de espacio dentro del tablespace. Al modificar o insertar filas en una tabla, las extensiones asignadas pueden aumentar de acuerdo a las necesidades. Durante la creación del tablespace, es posible parametrizar el tamaño y el número de extensiones que pueden asignarse a sus objetos.
Gestión de tablespaces
Históricamente, la administración del espacio libre en los tablespaces se realizaba de dos formas:
- Gestionados por diccionario: Utilizados hasta Oracle 8i; Oracle almacena la información relativa a la asignación y uso del espacio directamente en el diccionario de datos.
- Gestionados localmente (LMT): Introducidos a partir de Oracle 8i; la información de ocupación se gestiona mediante un mapa de bits almacenado en el propio tablespace. Es la opción estándar y recomendada.
Los principales beneficios de los tablespaces gestionados localmente son:
- Proporcionan alta concurrencia y mayor velocidad en las operaciones de asignación y desasignación de espacio.
- Reducen el acceso continuo de los procesos al diccionario de datos.
- Realizan un seguimiento automático y eficiente del espacio libre adyacente, evitando la fragmentación.
Archivos de diagnósticos
Archivos TRACE (.TRC)
Estos archivos se utilizan para registrar y rastrear información de los procesos en segundo plano (background) y la actividad de los usuarios. Se dividen en dos categorías:
- Trazas de procesos background: Registran errores producidos en los procesos internos de la instancia. Suelen tener la extensión
.TRC. - Trazas de procesos de usuarios: Recogen estadísticas de rendimiento, seguimiento de sentencias SQL o incidencias en las sesiones de los usuarios. Su ubicación depende de directivas de configuración como el parámetro
USER_DUMP_DEST.
Archivos LOG (Alert Log)
Es un archivo de texto secuencial que registra cronológicamente los sucesos y errores significativos ocurridos durante la operativa de la base de datos. Por lo general, adopta un formato de nomenclatura del tipo ALERT_<SID>.LOG. Contiene información crítica, tal como:
- Eventos de inicio y parada de la base de datos (startup y shutdown).
- Valores no predeterminados de los parámetros de inicialización (archivo init).
- Arranque e incidencias de los procesos background.