sábado, 25 de julio de 2009

Arquitectura de una Base de Datos Oracle

Un servidor Oracle consiste de una "instancia Oracle" (memoria=SGA+PGA) y de una "base de datos Oracle" (disco=datafiles) esta base de datos en ejecución está asociada con una instancia.

Es así que cuando una base de datos es iniciada sobre un servidor de base de datos, el software de oracle asigna un área de memoria compartida llamada "System Global Area (SGA)" ó "Area Global del Sistema" e inicia varios procesos en background de Oracle, esta combinación del SGA y los procesos Oracle conforma la instancia.

Después de iniciar una instancia, el software de Oracle asocia la instancia con una base de datos específica, dicho proceso es llamado el proceso de montar(STARTUP MOUNT) la base de datos, ahora la base de datos está entonces lista para ser abierta(STARTUP OPEN), lo cual la hace accesible a usuarios autorizados.

Multiples instancias pueden ejecutarse concurrentemente sobre la misma computadora, cada una accesando su propia base de datos física. La arquitectura de la base de datos se puede entonces observar como varios componentes estructurales interrelacionados.

Una base de datos Oracle usa estructuras de memoria y procesos para gestionar y accesar la base de datos, todas estas estructuras de memoria existen en la memoria principal(RAM) del servidor(HW) que constituye el servidor de base de datos.

Los procesos son hilos que trabajan en la memoria de estos servidores(HW), asi un proceso es definido como un hilo de control o un mecanismo en un sistema operativo que puede ejecutar una serie de tareas.

Las estructuras de memoria básicas asociadas con una instancia Oracle incluyen:

System Global Area (SGA): Memoria compartida por todos los procesos.

Program Global Area (PGA): Memoria privada a cada proceso de servicio y de fondo, solo hay una PGA por cada proceso.

El SGA es un área de memoria que contiene datos e información de control para la instancia, incluye las siguientes estructuras de datos:

Database buffer cache: Memoria cache(de rápido acceso) de los bloques de datos recibidos desde la base de datos, es decir cuando queremos obtener un dato y este no está en memoria entonces es primero obtenida del disco y copiada a este buffer para una posterior obtención más rápida, es decir el próximo proceso ya no se vaya a disco sino al buffer.

Redo log buffer: Memoria cache(de rápido acceso) de la información "redo" hasta que pueda ser escrita a los archivos físicos "redo logs" que se encuentran en disco. Cada transacción que realizamos es primero copiada a este buffer y después a los archivos "redo logs" en disco.

Shared pool: Memoria cache(de rápido acceso) que almacena varias estructuras que pueden ser compartidas entre procesos de usuario.

Large pool: Es un área opcional que proporciona grandes asignaciones de memoria para ciertos procesos largos, como son operaciones de backups y de recuperación así como tambien procesos de entrada y salida al disco.

Java pool: Es usado para todas las sesiones específicas a código java y datos dentro de la máquina virtual java.

Streams pool: Es usado por Oracle Streams.

Cuando iniciamos una instancia la cantidad de memoria asignada para el SGA es mostrada en la interface de comandos de sqlplus o en Enterprise Manager, esta información es mostrada en bytes.

1 comentario:

Es bueno comunicarnos, comenta!!.