Saltar a contenido

Oracle

Introducción

Oracle es un Sistema Gestor de Bases de Datos con características objeto-relacionales, que pertenece al modelo evolutivo de SGBD. Sus características principales son las siguientes:

  • Entorno cliente/servidor.
  • Gestión de grandes bases de datos.
  • Usuarios concurrentes.
  • Alto rendimiento en transacciones.
  • Sistemas de alta disponibilidad.
  • Disponibilidad controlada de los datos de las aplicaciones.
  • Adaptación a estándares de la industria, como SQL-92.
  • Gestión de la seguridad.
  • Autogestión de la integridad de los datos.
  • Opción distribuida.
  • Portabilidad.
  • Compatibilidad.
  • Conectabilidad.
  • Replicación de entornos.

Arquitectura de Oracle

Base de Datos e instancia de Oracle

Una base de datos Oracle es una colección de datos tratada como una unidad. El propósito general es almacenar y recuperar información relacionada.

Una instancia Oracle consta de una estructura de memoria, llamada Área Global del Sistema (SGA), y de unos procesos background utilizados por el servidor Oracle para manejar una base de datos. Cada instancia Oracle puede abrir y utilizar sólo una base datos en cualquier punto y momento. La instancia es el medio de acceso a una base de datos.

Estructura de la memoria

La estructura de la memoria está formada por dos áreas de memoria llamadas:

  • SGA (Área Global del Sistema). Asignada al iniciar la instancia y componente fundamental de una instancia Oracle.
  • PFA (Área Global de Programas). Asignada al iniciar el proceso de servidor.

Área Global del Sistema (SGA)

El SGA está formada por varias estructuras de la memoria:

  • Shared Pool (Conjunto compartido).
  • Caché de Buffers de base de datos.
  • Buffer de Redo Log.
  • Otras estructuras.

El SGA es dinámica. Su tamaño está definido por el parámetro SGA_MAX_SIZE.

Caché de Buffers de base de datos

Almacena copias de bloques de datos que se han recuperado de archivos de datos.

Buffer de Redo Log

Es un buffer circular que contiene los cambios realizados en los bloques de archivos de datos. Esta información se almacena en registros de redo. Los registros de redo contienen información que permite reconstruir o rehacer cambios.

Large Pool

Es un área opcional de memoria en el SGA, que libera al Shared Pool de su carga.

Se utiliza para:

  • Memoria de sesión (UGA) para el servidor compartido.
  • Procesos de servidor de E/S.
  • Operaciones de copia de seguridad y recuperación (RMAN).
  • Buffers de mensajes de ejecución en paralelo (si PARALLEL_AUTOMATIC_TUNING se define como TRUE).

El tamaño del Large Pool se define en LARGE_POOL_SIZE.

Área Global de Programas (PGA)

El PGA es una región de la memoria que contiene los datos y la información de control de un único proceso de servidor o de un único proceso en segundo plano. El PGA se asigna cuando se crea un nuevo proceso y se libera cuando éste se termina.

La memoria PGA incluye los siguientes componentes (dependiendo de si la instancia se ejecuta en una configuración de servidor dedicado o de servidor compartido):

  • Área SQL privada. Contiene datos, como información ligada y estructuras de memoria de tiempo de ejecución.
  • Memoria de sesión.
  • Área de trabajo SQL. Utilizadas en operaciones con uso intensivo de la memoria.

Estructura de procesos

En Oracle se distinguen varios tipos de procesos:

  • Procesos de usuario. Se inician cuando un usuario de base de datos solicita una conexión a Oracle Server.
  • Procesos de servidor. Se conectan a la instancia Oracle y se inician cuando un usuario establece una sesión. Pueden ser un servidor dedicado o compartido.
  • Procesos en segundo plano. Se inician al iniciar una instancia Oracle. Mantienen y fuerzan las relaciones entre las estructuras físicas y de memoria.

Procesos en Segundo Plano

Los procesos en segundo plano obligatorios son:

  • DBWn. Escritor de Base de Datos.
  • LGWR. Escritor de Logs.
  • SMON. Monitor del Sistema.
  • PMON. Monitor de Procesos.
  • CKPT. Punto de Control.

Y los opcionales:

  • ARCn. Archiver.
  • CJQ0. Cola de Trabajos de Coordinador.
  • Dnnn. Distribuidor.
  • LCKn. Gestor de bloqueos RAC – Bloqueos de Instancia.
  • LMDn. Monitor de DLM de RAC – Bloqueos Remotos.
  • LMON. Monitor de DLM de RAC – Bloqueos Globales.
  • LMS. Servicio de Caché Global de RAC.
  • Pnnn. Esclavos de Consulta en Paralelo.
  • QMNn. Gestión de Colas Avanzada.
  • RECO. Recuperador.
  • Snnn. Servidor Compartido.

Escritor de Bases de Datos (DBWn)

Registra los cambios que hay que deshacer y los bloques de datos en la caché de buffers de base de datos. El proceso DBWn escribe los buffers sucios desde la caché de buffers de base de datos en los archivos de datos.

DBWn aplaza la escritura en los archivos de datos hasta que se produce uno de los siguientes eventos:

  • Punto de control normal o incremental.
  • El número de buffers sucios alcanza un valor umbral.
  • Un proceso explora un número determinado de bloques cuando realiza una exploración en busca de buffers libres y no se puede encontrar ninguno.
  • Se produce un timeout.
  • Se produce una solicitud de sondeo en un entorno RAC.
  • Se coloca un tablespace normal o temporal offline.
  • Se coloca un tablespace en modo de sólo lectura.
  • Borrado o truncamiento de una tabla.
  • ALTER TABLESPACE nombre_del_tablespace BEGIN BACKUP.

Escritura de Logs (LGWR)

Realiza escrituras secuenciales desde el buffer de redo log al archivo redo log en las siguientes situaciones:

  • Cuando se valida una transacción.
  • Cuando el buffer de redo log se encuentra a un tercio de su capacidad.
  • Cuando existe más de un megabyte de cambios en el buffer de redo log.
  • Antes de que DBWn escriba los bloques modificados de la caché de buffers de base de datos en los archivos de datos.
  • Cada tres segundos.

LGWR sólo confirmará la operación de validación (COMMIT) una vez que se haya escrito el redo en el disco.

Monitor del Sistema (SMON)

Se encarga de recuperar la instancia en caso de fallo.

Monitor de Procesos (PMON)

Se encarga de hacer una limpieza después de los procesos fallidos de la siguiente forma:

  • Realizando un rollback en la transacción actual del usuario.
  • Liberando todos los bloqueos de tablas o filas actuales.
  • Liberando otros recursos que están reservados en ese momento por el usuario.
  • Reiniciando distribuidores interrumpidos.

Punto de Control (CKPT)

Cada tres segundos, el proceso CKPT almacena datos en el archivo de control para identificar el punto del archivo redo log online en el que se debe iniciar la recuperación, que se llama punto de control. El objetivo de un punto de control es garantizar que todos los buffers de la caché de buffers de base de datos que se han modificado antes de un punto en el tiempo se hayan escrito en los archivos de datos. Este punto en el tiempo es el punto en el que se debe iniciar la recuperación de la base de datos en caso del fallo de una instancia.

Los puntos de control se inician por los siguientes motivos:

  • Para garantizar que los bloques de datos modificados en la memoria se escriben en el disco con frecuencia.
  • Para reducir el tiempo necesario de recuperación de una instancia.
  • Para garantizar que todos los datos validados se han escrito en los archivos de datos durante el cierre.

Archivador (ARCn)

Archiva automáticamente archivos redo log online si está definido el modo ARCHIVELOG. Protege el registro contra todos los cambios realizados en la base de datos.

Estructura lógica de Oracle

La arquitectura de la base de datos Oracle incluye las estructuras físicas y lógicas que conforman la base de datos.

  • La estructura física incluye archivos de control, archivos redo log online y archivos de datos que conforman la base de datos.
  • La estructura lógica incluye tablespaces, segmentos, extensiones y bloques de datos.

La estructura lógica de Oracle viene determinada por:

  • Uno o más tablespaces (área lógica de almacenamiento).
  • Los objetos de los distintos esquemas (colecciones de objetos).

Las estructuras de almacenamiento lógico, incluyendo tablespaces, segmentos y extensiones, dictan la forma de utilización del espacio físico. Los objetos del esquema y las relaciones entre ellos forman el diseño relacional de la base de datos.

  • Tablespaces
    Una base de datos se divide en unidades de almacenamiento lógico llamadas tablespaces. Un tablespace se usa para agrupar estructuras lógicas relacionadas.
  • Esquemas y objetos del esquema
    Un esquema es una colección de objetos de la base de datos. Los objetos del esquema son estructuras lógicas que hacen referencia directa a datos de la base de datos (tablas, vistas, secuencias, procedimientos almacenados, sinónimos, índices, clusters y enlaces con otras bases de datos).
  • Bloques de datos, extensiones y segmentos
    Los bloques de datos Oracle son las estructuras lógicas de más bajo nivel. Una base de datos se almacena en bloques de datos, que se corresponden con un número específico de bytes de espacio en disco. Una extensión es un número específico de bloques de datos contiguos, que se emplea para almacenar un tipo de información específico. Un segmento es un conjunto de extensiones reservadas para una determinada estructura lógica (por ejemplo, segmentos de datos o segmentos de índices).

Estructura física de Oracle

La estructura física está formada por los ficheros del sistema operativo que constituyen la base de datos. Todas las base de datos Oracle constan de tres tipos de ficheros: uno o más ficheros de datos, uno o más ficheros de redo log y uno o más ficheros de control. Proveen el almacenamiento físico de la información de la base de datos.

  • Ficheros de datos
    Los ficheros de datos contienen los datos de la base de datos. Tienen las siguientes características:

    • Un fichero sólo puede estar asociado con una base de datos.
    • Los ficheros de datos tienen atributos que permiten reservar automáticamente para ellos extensiones cuando se acaba el espacio.
    • Uno o más ficheros de datos forman una unidad lógica de almacenamiento llamada tablespace.
  • Ficheros de redo log
    El conjunto de ficheros de redo log se denomina Redo Log de la base de datos. La función principal de Redo Log es guardar todos los cambios hechos a los datos. Son críticos en la protección de la base de datos ante fallos; se utilizan en caso de fallo para recuperar la base de datos.
  • Ficheros de control
    Un fichero de control contiene entradas que especifican la estructura física de la base de datos. En particular contiene:

    • El nombre de la base de datos.
    • Los nombres y localización de los ficheros de la base de datos y los ficheros de redo log.
    • Fecha de creación de la base de datos.
    • Información de sincronización para el proceso de recuperación de la base de datos.

Archivo de Control

El archivo de control es un pequeño archivo binario necesario para que la base de datos se inicie y funcione correctamente. Cada archivo de control está asociado sólo a una base de datos Oracle. Antes de abrir una base de datos, se lee el archivo de control para determinar si la base de datos tiene un estado válido para su uso.

Oracle Server actualiza continuamente un archivo de control mientras se está utilizando la base de datos. Si, por cualquier motivo, no se puede acceder al archivo de control la base de datos no funcionará correctamente. Si se pierden todas las copias de los archivos de control de una base de datos, será necesario recuperar la base de datos antes de que se pueda abrir.

Un archivo de control contiene las siguientes entradas:

  • Nombre e identificador de la base de datos.
  • Registro de hora de la creación de la base de datos.
  • Nombres de tablespace.
  • Nombres y ubicaciones de los archivos de datos y los archivos redo log online.
  • El número de secuencia del archivo redo log online actual.
  • Información del punto de control.
  • Inicio y fin de los segmentos de deshacer.
  • Información de los redo logs archivados.
  • Información de copia de seguridad.

Diccionario de Datos

El Diccionario de Datos es una de las partes más importantes de una base de datos Oracle. El Diccionario de Datos es un juego de tablas y vistas de sólo lectura que proporciona información acerca de su base de datos asociada.

Oracle Server actualiza el diccionario de datos siempre que se ejecuta un comando DDL (Lenguaje de Definición de Datos). Además, los comandos DDL (Lenguaje de Manipulación de Datos), como el que produce la ampliación de una tabla, también pueden actualizar el diccionario de datos.

El diccionario de datos contiene dos partes:

  • Tablas base

    • Almacenan la descripción de la base de datos.
    • Se crean con el comando CREATE DATABASE.
  • Vistas del diccionario de datos

    • Se utilizan para simplificar la información de las tablas base.
    • Se accede a ellas a través de sinónimos públicos.
    • Se crean con el archivo de comandos catalog.sql

El diccionario de datos proporciona información acerca de:

  • Estructuras lógicas y físicas de la base de datos.
  • Definiciones y asignaciones de espacio de los objetos.
  • Restricciones de seguridad.
  • Usuarios.
  • Roles.
  • Privilegios.
  • Auditorías.

Vistas del Diccionario de Datos

Existen tres juegos de vistas estáticas, que se diferencian por su ámbito:

  • DBA. Lo que hay en todos los esquemas. Muestran una vista global de toda la base de datos.
  • ALL. A lo que puede acceder el usuario. Hacen referencia a la perspectiva global del usuario de la base de datos.
  • USER. Lo que hay en el esquema del usuario. Hacen referencia al propio a los objetos que posee el usuario actual.

Archivos Redo Log Online

Los archivos redo log online proporcionan el medio para rehacer transacciones en caso de que se produzca un fallo de la base de datos. Cada transacción se escribe de forma síncrona en el buffer de redo log y, a continuación, se vacía en los archivos redo log online con el fin de proporcionar un mecanismo de recuperación en caso de fallo de los medios físicos.

Los archivos redo log online se utilizan de manera cíclica. Si un archivo redo log online se llena, LGWR pasará al siguiente grupo de log.

Archivos Redo Log Archivados

La ejecución de la base de datos en modo ARCHIVELOG y el proceso de archivado de archivos redo log online tiene dos ventajas:

  • Recuperación. La copia de seguridad de la base de datos y los archivos redo log archivados y online garantizan la recuperación de todas las transacciones validadas.
  • Copia de seguridad. Se puede realizar mientras la base de datos está abierta.

Seguridad en Oracle

El servidor Oracle provee de control de accesos discrecional, es decir, acceso restringido a la información basado en privilegios.

Oracle gestiona la seguridad de la base de datos usando:

  • Usuarios y esquemas de la base de datos.
  • Privilegios.
  • Roles.
  • Ajustes de rendimiento y cuotas.
  • Límites sobre los recursos.
  • Auditoría.

Cada usuario tiene un dominio de seguridad, que determina cosas como:

  • Acciones (privilegios y roles) disponibles para el usuario.
  • Cuotas sobre tablespaces.
  • Límites en los recursos del sistema.

Estructuras usadas para la recuperación en Oracle

Oracle posee varias estructuras y mecanismos software para proveer:

  • Recuperación de la base de datos ante distintos tipos de fallos.
  • Operaciones de recuperación flexibles.
  • Disponibilidad de los datos durante las operaciones de backup y recovery.

Oracle usa varias estructuras para proveer la recuperación completa de la instancia:

  • el Redo Log,
  • los segmentos de rollback,
  • un fichero de control,
  • las copias necesarias de la base de datos.

Administración de Oracle

Usuarios Administradores de Base de Datos

Los usuarios SYS y SYSTEM se crean de forma automática durante la creación de la base de datos. Ambos tienen el rol DBA, que tiene todos los privilegios del sistema de base de datos.

El usuario SYS es el propietario del diccionario de datos. El usuario SYSTEM es propietario de las vistas y tablas internas adicionales que utilizan las herramientas de Oracle.

Cierre de la Base de Datos

Opciones de SHUTDOWN

SHUTDOWN NORMAL

Es el modo de cierre por defecto.

  • No se pueden realizar conexiones nuevas.
  • Oracle Server espera a que se desconecten todos los usuarios antes de finalizar el cierre.
  • Los buffers de la base datos y de redo se escriben en el disco.
  • Los procesos en segundo plano han terminado y se ha eliminado el SGA de la memoria.
  • Oracle cierra y desmonta la base de datos antes de cerrar la instancia.
  • El siguiente inicio no requiere una recuperación de la instancia.
SHUTDOWN TRANSACTIONAL

Evita que los clientes pierdan su trabajo.

  • Ningún cliente puede iniciar una nueva transacción en esa instancia.
  • Un cliente se desconecta cuando el cliente finaliza la transacción en curso.
  • Una vez finalizadas todas las transacciones, se produce un cierre inmediato.
  • El siguiente inicio no requiere una recuperación de la instancia.
SHUTDOWN IMMEDIATE
  • No se finalizan las sentencias SQL actuales que está procesando Oracle.
  • Oracle Server no espera a que se desconecten los usuarios conectados en ese momento a la base de datos.
  • Oracle hace rollback de las transacciones activas y desconecta a todos los usuarios conectados.
  • Oracle cierra y desmonta la base de datos antes de cerrar la instancia.
  • El siguiente inicio no requiere una recuperación de la instancia.
SHUTDOWN ABORT
  • Se terminan inmediatamente las sentencias SQL actuales que Oracle Server está procesando.
  • Oracle Server no espera a que se desconecten los usuarios conectados en ese momento a la base de datos.
  • Los buffers de la base de datos y de redo no se escriben en el disco.
  • No se hacde rollback de las transacciones no validadas.
  • La instancia se termina sin cerrar los archivos.
  • La base de datos no se cierra ni se desmonta.
  • El siguiente inicio no requiere una recuperación de la instancia.

Gestión de Datos de Deshacer (Undo)1

Existen dos métodos para gestionar los datos de deshacer:

  • Gestión de SMU automático. Oracle gestiona automáticamente la creación, la asignación y el ajuste de los segmentos de deshacer.
  • Gestión de SMU manual. El usuario gestiona manualmente la creación, la asignación y el ajuste de los segmentos de deshacer.

Segmentos de deshacer

Los segmentos de deshacer se utilizan para guardar el valor antiguo (datos de deshacer) cuando un proceso cambia los datos de una base de datos. Almacena la ubicación de los datos y los datos mismos tal y como se encontraban antes de modificarlos.

La cabecera de un segmento de deshacer contiene una tabla de transacciones donde se almacena la información acerca de las transacciones actuales que utiliza el segmento de deshacer.

Objetivo de los segmentos de deshacer
  • Rollback de transacciones. Si una transacción cambia una fila de una tabla, la imagen antigua de las columnas modificadas (datos de deshacer) se guarda en el segmento de deshacer. Si se hace rollback en la transacción, Oracle restaura los valores originales escribiéndolos de nuevo en la fila del segmento de deshacer.
  • Recuperación de transacciones. Si la instancia falla mientras las transacciones están en curso, Oracle debe deshacer los cambios no validados cuando se vuelve a abrir la base de datos. Este rollback forma parte de la recuperación de transacciones. La recuperación sólo es posible porque los cambios realizados en el segmento de deshacer también están protegidos por archivos redo log online.
  • Consistencia de lectura. Mientras las transacciones están en curso, el resto de los usuarios de la base de datos no debe ver ninguno de los cambios no validados efectuados por esas transacciones.

  1. Deshacer (undo) aparece con Oracle 9i. En versiones anteriores se disponía de rollback 


Última actualización: August 15, 2021