Componentes Esenciales de la Arquitectura Oracle Database
Archivos de Datos en Oracle Database
Los archivos de datos contienen toda la información de la base de datos: datos de usuario y datos de sistema. Antes de introducir datos en la base de datos, es necesario crear un espacio para las tablas (tablespace) y, posteriormente, crear una tabla dentro de ese espacio para introducir los datos. Un archivo de datos solo puede pertenecer a un único tablespace.
Al instalar Oracle, se crean varios tablespaces por defecto:
- SYSTEM: Contiene información que Oracle necesita para gestionarse a sí misma, por ejemplo, el diccionario de datos.
- USERS: Contiene información personal de los usuarios.
- TEMP: Aquí Oracle almacena las tablas temporales (para gestionar sus transacciones).
- UNDOTBS1: En él es donde Oracle guarda la información de deshacer y permite recuperar los datos cuando una operación no se completa.
Registros de Rehacer o Redo Log: El Registro de Transacciones
Se trata de archivos de datos en los que Oracle registra todos los cambios que se efectúan sobre los datos (INSERT
, UPDATE
y DELETE
). Suele haber varios registros de rehacer y conviene almacenarlos en discos diferentes para evitar pérdidas debido a fallos en el disco. Oracle crea un mínimo de dos grupos de Redo Log.
Un registro de Redo Log contiene la siguiente información:
- Identificación de la transacción.
- Dirección de bloque.
- Número de fila.
- Número de columna.
- Valor anterior y nuevo del dato modificado.
Archivos de Control en Oracle Database
Los archivos de control contienen información sobre los archivos asociados con una base de datos Oracle. Todas las modificaciones importantes que se hagan en la estructura de la base de datos se registran en el archivo de control. Estos archivos mantienen la integridad de la base de datos.
Oracle recomienda que la base de datos tenga un mínimo de dos archivos de control en discos diferentes. Los archivos de control que se crean en la instalación son CONTROL01.CTL
, CONTROL02.CTL
y CONTROL03.CTL
, y contienen la siguiente información:
- El nombre y el identificador de la base de datos.
- Registro de la hora y fecha de creación de la base de datos.
- Los nombres y ubicaciones de los archivos de datos asociados y los archivos de Redo Logs.
- El historial de los Redo Log, que se registra durante los cambios de logs.
- La ubicación y el estado de los Redo Logs archivados.
- La ubicación y el estado de las copias de seguridad.
- Número de secuencia de log actual, que se registra cuando se producen los cambios de log.
- Información sobre checkpoints (puntos de control que se dan cuando se llena el Redo Log, cuando se detiene la base de datos, etcétera).
- Estado online y offline de los archivos de datos.
Para obtener información del archivo de control, se consultan las siguientes vistas. Solo los administradores y SYSTEM
pueden consultarlas. Para ello, deben conectarse como SYSDBA
desde el símbolo del sistema:
C:\>SQLPLUS SYS/ARM AS SYSDBA
Las vistas para obtener información del archivo de control son:
- V$CONTROLFILE: Visualiza el nombre y la ubicación de los archivos de control.
- V$CONTROLFILE_RECORD_SECTION: Visualiza información sobre las diferentes secciones de los archivos de control, por ejemplo, el número máximo de archivos.
- V$DATAFILE: Visualiza información detallada de los archivos de datos.
- V$TEMPFILE: Visualiza información de los archivos temporales.
- V$TABLESPACE: Visualiza información de los espacios de tablas o tablespaces.
- V$DATABASE: Visualiza información detallada de la base de datos.
Estructura de la Memoria en Oracle Database
El cliente y el servidor se comunican por medio de estructuras de memoria. Existen dos tipos principales: la SGA (System Global Area) y la PGA (Program Global Area).
Área Global del Sistema (SGA)
La SGA sirve para almacenar los datos de la base de datos que se han consultado más recientemente. Contiene información de datos y de control, y se compone de las siguientes zonas:
- Conjunto Compartido o Área SQL Compartida: Formada por la caché de diccionario de datos y la caché de biblioteca, que contienen información acerca de las últimas definiciones utilizadas en la base de datos y sobre las instrucciones SQL ejecutadas.
- Caché de Buffers: Contiene copias de los últimos bloques de datos leídos y utilizados de los archivos de datos. Los usuarios acceden a los datos en esta zona de la memoria.
- Conjunto Grande (Large Pool): Es un área de memoria opcional. Sus datos no están directamente relacionados con el procesamiento de sentencias SQL. Por ejemplo, los bloques de datos que se copian durante las operaciones de copia de seguridad y restauración.
- Buffer del Registro de Rehacer (Redo Log Buffer): En esta área se registran los cambios en la base de datos antes de escribirse en los archivos de registro de rehacer.
Área Global del Programa o de Procesos (PGA)
Es la zona de memoria utilizada por un único proceso y no se comparte. Cuando un usuario se conecta, se crea un proceso de usuario. Oracle comprueba y valida a ese usuario e inmediatamente le asigna un proceso de servidor que lleva asociada su PGA.
En un servidor dedicado, la PGA incluye los siguientes componentes:
- Área de ordenación de sentencias SQL.
- Información de la sesión: privilegios y estadísticas del rendimiento.
- Estado de cursor que indica la etapa en el procesamiento de las sentencias que la sesión utiliza en ese momento.
Procesos de Soporte de la Base de Datos Oracle
Las relaciones entre las estructuras físicas y de memoria de la base de datos se mantienen y aplican mediante una serie de procesos de segundo plano. La base de datos gestiona estos procesos, que son:
- DBWR (DataBase WRiter): Este proceso es el responsable de gestionar el contenido del buffer de datos de la SGA. Cuando una petición cuyos datos no están en el buffer de datos, el DBWR se encargará de llevar al buffer un nuevo bloque de información del archivo de datos. El DBWR escribe en los archivos de datos cuando el número de bloques «sucios» alcanza el 90 % de ocupación o cuando se produce un checkpoint.
- Checkpoint: Este evento hace que el DBWR escriba todos los bloques del buffer de datos que se hayan modificado desde el último checkpoint y que actualice las cabeceras de los archivos para reflejar que se ha completado con éxito la escritura. El número de punto de control actúa como sincronizador: si los archivos de datos, de Redo Logs y de control tienen el mismo número de punto de control, el estado de la base de datos es consistente.
- LGWR (LoG WRiter): Gestiona la escritura del contenido del buffer del registro de rehacer de la SGA a los archivos de Redo Log online en las siguientes situaciones:
- Cuando se valida una transacción.
- Cuando el buffer Redo Log se llena a un tercio de su capacidad.
- Cuando hay más de un megabyte de registros cambiados en el buffer de Redo Log.
- También escribe de forma cíclica.
- Cuando se produce un timeout.
- Antes de que el DBWR escriba los bloques modificados de la caché de buffers de la base de datos a los archivos de datos. Esta operación permite que Oracle pueda recuperarse en cualquier momento si hay fallos.
- SMON (System MONitor): Comprueba la consistencia de la base de datos. Es un proceso obligatorio que se ocupa de todas las recuperaciones que sean precisas durante el arranque de la base de datos.
- PMON (Process MONitor): Realiza una limpieza de recursos al terminar la ejecución de los procesos. Al igual que SMON, se activa de forma periódica para ver si es necesaria su intervención.
- ARCH (ARCHiver): Es opcional. Archiva en disco o cinta una copia de los Redo Log cuando están llenos para una posible recuperación por fallo de disco. Archiva automáticamente los Redo Log online antes de que se puedan volver a utilizar, con el fin de proteger los cambios realizados en la base de datos.
- RECO (RECOverer): Es opcional. Recupera transacciones distribuidas dudosas; se utiliza en bases de datos Oracle distribuidas.