Instituto Profesional DuocUC Escuela de Ingeniería Componentes Arquitectura Oracle Jaime Amigo P. © 2006, Santiago - Chile Instituto Profesional DuocUC Escuela de Ingeniería Objetivos Después de completar esta lección, usted deberá: • Comprender la Arquitectura Oracle y sus principales componentes • Listar las estructuras involucradas en la conexión de un usuario a una Instancia Oracle 2 Instituto Profesional DuocUC Escuela de Ingeniería Descripción Componentes Principales Descripción Componentes Principales La arquitectura Oracle incluye un número primario de componentes las que serán discutidas a lo largo de la lección. La arquitectura de Oracle Server puede ser descrita en tres categorías: 1. Procesos de Usuarios 2. Estructuras de Memorias que recolectan datos, llamada Instancia Oracle 3. Estructuras físicas de archivos que se denomina Base de Datos (Data Files, Control Files y Redo Log Files) La figura expuesta a primera vista puede parecer compleja, sin embargo, cada uno de esos componentes será descrito en mayor detalle en las siguientes lecciones. Procesos de Usuarios A nivel de usuarios, dos procesos permiten a un usuario interactuar con la instancia y finalmente con la base de datos: Procesos Usuarios y Procesos Servidor. 3 Descripción de componentes principales (continuación) Cuando un usuario corre una aplicación (sqlplus, forms, etc), Oracle levanta un proceso usuario para soportar la conexión a la instancia. Dependiendo de la arquitectura de la aplicación el proceso usuario existen en el propio PC del usuario o en una capa intermedia del servidor de aplicaciones. Así, este proceso usuario inicia la conexión a la instancia. Oracle llama la iniciación y mantenimiento de la comunicación entre proceso usuario y la instancia, conexión. Cuando la conexión es hecha, el usuario estable una sesión en la instancia. Después de establecer una sesión, cada usuario inicia un Proceso Servidor en el Servidor (Host). Este proceso servidor, es responsable de ejecutar las tareas que permiten al usuario interactuar con la base de datos. En resumen, un proceso usuario y servidor, están asociados con cada conexión de usuario y una estructura adicional de memoria llamada Program Global Area (PGA) se crea para cada usuario. La PGA almacena información específica de la sesión tales como valores de variables. Cada proceso servidor sobre el servidor tiene un área de memoria llamada PGA. 4 Instituto Profesional DuocUC Escuela de Ingeniería Servidor Oracle Un Servidor Oracle: • Es un Sistema Administrador de Bases de Datos que provee una administración abierta, comprensiva, integrada de información • Consiste de una instancia Oracle y una base de datos Oracle 5 Instituto Profesional DuocUC Escuela de Ingeniería Instancia Oracle • Es el medio para accesar una base de datos Oracle • Siempre abre una y solo una base de datos • Consiste de estructuras de memoria y procesos Instancia Oracle Una instancia Oracle esta conformada por una estructura de memoria llamada System Global Area (SGA) y varios procesos background. El proceso servidor se comunica con la SGA para satisfacer los requerimientos de información del usuario. Los componentes de la SGA serán descritos con mayor detalles mas adelante Si se esta en una ambiente UNIX o LINUX y tiene un motor Oracle y una instancia subida, podrá ver los procesos background de dicha instancia ejecutando el comando ps –fea|grep ora_. Allí aparecerá el dueño, el process id padre, process id hijo, hora de inicio del proceso y nombre del proceso. 6 Instancia Oracle (continuación) Ejemplo muestra procesos en Linux de una instancia Oracle version 10g oracle 32723 1 0 Mar17 ? 00:00:04 ora_pmon_desa10g oracle 32725 1 0 Mar17 ? 00:00:00 ora_mman_desa10g oracle 32727 1 0 Mar17 ? 00:00:04 ora_dbw0_desa10g oracle 32729 1 0 Mar17 ? 00:00:09 ora_lgwr_desa10g oracle 32731 1 0 Mar17 ? 00:00:13 ora_ckpt_desa10g oracle 32733 1 0 Mar17 ? 00:00:12 ora_smon_desa10g oracle 32735 1 0 Mar17 ? 00:00:00 ora_reco_desa10g oracle 32737 1 0 Mar17 ? 00:00:01 ora_cjq0_desa10g oracle 32751 1 0 Mar17 ? 00:00:00 ora_o000_desa10g oracle 367 1 0 Mar17 ? 00:00:02 ora_qmnc_desa10g oracle 369 1 0 Mar17 ? 00:00:33 ora_mmon_desa10g oracle 371 1 0 Mar17 ? 00:00:04 ora_mmnl_desa10g 7 Instituto Profesional DuocUC Escuela de Ingeniería Estableciendo una conexión y creando una sesión Establecer una conexión de usuario y crear una sesión, es lo que se conoce como conectarse a una instancia Oracle 8 Instituto Profesional DuocUC Escuela de Ingeniería Base de Datos Oracle • Es una colección de datos tratados como una unidad • El propósito general es almacenar y recuperar datos de información relacionada • Consiste de tres tipos de archivos – Data Files – Control Files – Redo Log Files Base de Datos Oracle Una instancia es una estructura temporal de memoria, pero la base de datos Oracle esta basada en un conjunto de archivos físicos que residen dentro de un servidor en discos duros. Estos archivos son llamados, control files, data files y redo logs. Otros archivos físicos que están asociados a una base de datos Oracle pero que técnicamente no son parte de esta son el password file (archivos de password), el PFILE y SPFILE (que serán descritos en otras secciones de este curso) y finalmente, archive redo log files. El detalle de cada uno de estos tipos de archivos será cubierto en el transcurso de este curso. 9 Instituto Profesional DuocUC Escuela de Ingeniería Estructura Física La estructura física de una base de datos Oracle esta determinada por los archivos del Sistema Operativo que proveen el almacenamiento físico para la información de la base de datos • Control files • Data files • Redo log files Estructura Física Control File Contiene información de otros archivos físicos, nombre de la base de datos, tamaño del bloque de la base de datos, conjunto de caracteres e información para recuperación. Estos archivos son requeridos para abrir la base de datos. Data Files Contienen la información que registran las aplicaciones finales de usuarios Redo Log Registra todos los cambios hechos a la base de datos y es usado para recuperación Archivos de Parámetros (PFILE y SPFILE) Son parámetros de configuración de la SGA, características opcionales de Oracle y procesos background Archived Log Son copias del contenido de Redo Log previos y son usados para recuperación 10 Estructura Física (continuación) Password File Archivo opcional usado para almacenar nombres de usuarios que les han sido otorgados los privilegios de SYSDBA y SYSOPER Oracle Net Entradas que configuran el listener de la base de datos y los clientes, permitiendo así la conectividad entre aplicaciones y el servidor 11 Instituto Profesional DuocUC Escuela de Ingeniería Estructura de Memoria La estructura de memoria consiste de dos áreas conocidas como: • SGA (System Global Area): – Asignada en la subida de la instancia (startup) y es un componente fundamental de una instancia Oracle • PGA (Program Global Area): – Asignada cuando el proceso servidor es iniciado SGA (System Global Area) Conjunto de memoria compartida que contiene datos e información de control para una determinada instancia ORACLE. El SGA se mantiene en memoria virtual del computador en el que reside la instancia ORACLE. Si dentro de la instancia existe la posibilidad de que más de un usuario se encuentre conectado simultáneamente, los datos dentro de la SGA de la instancia son compartidos entre todos los usuarios. PGA (Programa Global Area) Los procesos servidores (Snnn) se comunican con los diferentes procesos de usuario e interactúan con ORACLE para satisfacer las peticiones. Por ejemplo, cuando un proceso de usuario solicita datos que no estan en la SGA, el proceso servidor que atiende la petición será el encargado de leer los bloques de datos de disco y almacenarlos en la SGA. Puede haber un proceso servidor por cada proceso usuario (configuración de DBMS Dedicado) o un proceso servidor para muchos procesos usuarios (configuración de DBMS Multi-Threaded). La PGA es una región de memoria asociada a cada proceso servidor, la cual contiene datos e información de control para cada una de las sesiones que los usuarios mantienen con ORACLE a través de este proceso servidor. La PGA no es un área de memoria compartida. 12 Instituto Profesional DuocUC Escuela de Ingeniería SGA – System Global Area • • • Usada para almacenar información que es compartida por procesos de la base de datos Contiene datos e información de control para el Servidor Oracle que se asigna en una memoria virtual del servidor donde reside la BD La SGA consiste de varias estructuras de memoria: – Shared Pool – Database Buffer Cache SELECT * from V$SGA; – Redo Log Buffer – Otras estructuras System Global Area La SGA esta compuesta de tres componentes requeridos y de tres componentes opcionales. Componentes requeridos •Shared Pool : Cache de memoria que almacenada las sentencias SQL y PL/SQL mas recientemente usadas por usuarios. Contiene Library Cache y Data Dictionary Cache (se explicarán más adelante) •Database Buffer Cache: Cache de memoria que contiene los datos mas recientemente accesados (leídos) por los usuarios desde disco •Redo Log Buffer: Almacena información de transacciones con propósitos de recuperación (insert, delete, update, create, alter y drop) Componentes opcionales •Java Pool: Cache de memoria que almacenada los objetos JAVA mas recientemente usados y código de aplicación cuando se usa la opción Oracle JVM 13 System Global Area (continuación) •Large Pool: Cache de memoria que contiene para grandes operaciones como recuperación y respaldo con Recovery Manager (RMAN) y componentes de Shared Server •Streams Pool: Cache de memoria que almacena datos asociados con requerimientos de colas de mensajes cuando se instala la opción Advanced Queuing en el Servidor El tamaño de estos componentes de la SGA pueden ser administrados manualmente o automáticamente. Si se escoge administrar manualmente estos componentes, se debe especificar el tamaño de cada uno de ellos aumentando o disminuyendo el tamaño de ellos según las necesidades de la aplicación. Si los estos componentes son administrados automáticamente, la instancia por si misma monitorea la utilización de cada componente de la SGA y ajusta sus tamaños. Independiente si la administración de la SGA es automática o manual, Oracle asigna o desaigna espacio dinámico dentro de la SGA dividiendo la SGA dentro de unidades llamadas granules. Dependiendo del sistema operativo donde reside el motor de base de datos Oracle, los granules pueden ser de 4 MB, 8 MB o 16 MB. 14 Instituto Profesional DuocUC Escuela de Ingeniería SGA – System Global Area SQL> Select * from V$SGA; NAME VALUE --------------------------Fixed Size 787988 Variable Size 145750508 Database Buffers 25165824 Redo Buffers 262144 Muestra que el tamaño total de la SGA es 171,966,464 bytes Donde: El tamaño Variable Size esta compuesto de Shared Pool, Large Pool y Java Pool (145,750,508 bytes). Database Buffer Cache es 25,165,824 bytes.Redo Log Buffer es 262,144 bytes Y hay cierto espacio adicional para almacenar información de procesos usada por los procesos background de la instancia (787,988 bytes) La vista V$SGA_DYNAMIC_COMPONENTS contiene información mas detallada de la SGA de una instancia Oracle 15 Instituto Profesional DuocUC Escuela de Ingeniería Shared Pool El Shared Pool es usado para almacenar las sentencias SQL más recientemente usadas y las definiciones de datos más recientemente usados • Esto consiste dos estructuras de memoria claves para el rendimiento – Library cache – Data Dictionary Cache • El parámetro que determina su tamaño se llama SHARED_POOL_SIZE SHOW PARAMETERS SHARED_POOL; ALTER SYSTEM SET SHARED_POOL_SIZE = 64 MB; Esta estructura se utiliza durante el procesamiento de comandos. Su tamaño es configurable post creación de la BD. Contiene dos zonas específicas: A) Library Cache Almacena la siguiente información relacionada a una instrucción SQL: - Texto de la instrucción - Arbol de parching, es decir la versión compilada de la instrucción - Plan de ejecución, es decir, la secuencia de pasos a ser realizados para ejecutar la instrucción a bajo nivel de acuerdo con los resultados producidos por el optimizador de consultas Basándose en esta información, si una consulta es ejecutada nuevamente y su información permanece todavía en la Library Cache, no será necesario compilar de nuevo la instrucción. Esto permite mejorar el rendimiento de las aplicaciones que se ejecutan periódicamente. 16 Shared Pool (continuación) B) Data Dictionary Cache Almacena información de uso mas reciente sobre el diccionario de datos. Esta información incluye información de columnas, usuarios, password y privilegios. Durante la fase de compilación, esta información es necesaria para resolver los nombres de los objetos utilizados en un comando SQL y para validar los privilegios de acceso. 17 Instituto Profesional DuocUC Escuela de Ingeniería Library Cache Almacena información sobre las sentencias SQL y PL/SQL más recientemente usadas. La Library Cache: • Habilita el compartimiento de sentencias más comúnmente usadas • Es administrada por un algoritmo LRU (Least Recent Use, La de menor Uso Reciente). • Compuesta de dos estructuras: – Shared SQL Area – Shared PL/SQL Area • Su tamaño esta determinado por el dado en el Shared Pool Library Cache, almacena la siguiente información relacionada con una instrucción de SQL: • Texto de la instrucción • Arbol de parsing, es decir la versión compilada de la instrucción • Plan de Ejecución, es decir la secuencia de pasos a ser realizados para ejecutar la instrucción a bajo nivel de acuerdo con los resultados producidos por el optimizador de consultas. Basándose en esta información, si una consulta es ejecutada nuevamente, y su información permanece todavía en el Library Cache, no será necesario compilar de nuevo la instrucción. En tal sentido este componente de la arquitectura permite mejorar el rendimiento de las aplicaciones que se ejecutan periódicamente. 18 Instituto Profesional DuocUC Escuela de Ingeniería Data Dictionary Cache Es una colección de las definiciones de base de datos mas recientemente usadas. • Incluye información sobre archivos de base de datos, tablas, índices, columnas, usuarios, privilegios y otros objetos • Durante la fase de parser, el proceso servidor mira la información de el diccionario de datos para resolver los nombres de objetos y validar accesos • Un caché del diccionario de datos dentro de la memoria mejora el tiempo de respuesta ante consultas • El tamaño esta determinado por el dado en el Shared Pool Algoritmo de reemplazo de páginas "la de menor uso reciente" (LRU) Este algoritmo es una buena aproximación al óptimo y se basa en la observación de que las páginas de uso frecuente en las últimas instrucciones se utilizan con cierta probabilidad en las siguientes. De la misma manera, es probable que las páginas que no hayan sido utilizadas durante mucho tiempo permanezcan sin uso por bastante tiempo. Implementando el algoritmo con esta base, al ocurrir un fallo de página, se elimina la página que no haya sido utilizada durante el tiempo más grande. De ahí su denominación: menor uso reciente (LRU - Least Recent Use). A diferencia de los algoritmos anteriores, el LRU tiene un mejor rendimiento en cuanto al tiempo de aprovechamiento del CPU y del uso de la memoria. Sin embargo, el problema con este algoritmo es que su implementación es muy cara, ya que requiere de una asistencia considerable de hardware. 19 Instituto Profesional DuocUC Escuela de Ingeniería Database Buffer Cache Almacena copias de bloques de datos que han sido recuperados desde los Datafiles. • Habilita una ganancia de performance cuando se obtienen datos para modificarlos • Es administrado a través de un algoritmo LRU • El parámetro DB_BLOCK_SIZE determina el tamaño de bloque primario Su función es mantener los bloques de datos leídos directamente de los archivos de datos en disco. Cuando se procesa una consulta , el servidor busca los bloques de datos requeridos en esta estructura. Si el bloque no se encuentra en esta estructura, el proceso servidor lee el bloque de la memoria secundaria y coloca una copia en esta estructura. De esta forma, otras peticiones que requieran de este bloque de datos no requerirán de un acceso a memoria secundaria (lecturas físicas a disco). 20 Instituto Profesional DuocUC Escuela de Ingeniería Database Buffer Cache • • El tamaño de cada buffer de Buffer Cache es equivalente al tamaño de un Bloque Oracle, normalmente definido en 4 KB Database Buffer Cache consiste en Sub Cache independientes y bloques de múltiples tamaños: – DB_CACHE_SIZE – Tamaño por defecto no puede ser 0 – – • • DB_KEEP_CACHE_SIZE – Usado para retener en memoria bloques que podrían ser reusados BD_RECYCLE_CACHE_SIZE – Puede ser usado para eliminar bloques de memoria que tienen pequeños cambios El parametro DB_BLOCK_SIZE determina el tamaño de bloque primario El Database Buffer Cache puede ser modificado dinámicamente usando ALTER SYSTEM 21 Instituto Profesional DuocUC Escuela de Ingeniería Redo Log Buffer Cache • Es un buffer de datos circular que registra todos los cambios hechos en los bloques de datos de una base de datos – El propósito principal es recuperar – Los cambios registrados en su interior son llamados entradas de Redo – Las entradas de Redo contienen información para reconstrucción de cambios realizados por operaciones de INSERT, DELETE, UPDATE, CREATE, ALTER o DROP – El parámetro que define su tamaño se llama LOG_BUFFER Es un Buffer circular que mantiene todos los cambios que han sido realizados sobre la base de datos por operaciones de insert, update, delete, create, alter y drop. Las entradas de este buffer contienen toda la información necesaria para reconstruir los cambios realizados a la base de datos por medio de cualquier sentencia DDL o DML (el bloque que ha sido cambio, la posición de cambio y el nuevo valor). El uso de Redo Log Buffer es estrictamente secuencial, en tal sentido pueden entrelazarse cambios en los bloques de datos producidos por transacciones diferentes. El tamaño de este Buffer también puede ser configurado para mejorar el rendimiento de la instancia y de las aplicaciones que sobre ellas se ejecuten. 22 Instituto Profesional DuocUC Escuela de Ingeniería PGA – Program Global Area • • • Es una área de memoria reservada para cada proceso de usuario que se conecta a una base de datos Oracle La PGA es asignada cuando un proceso de usuario es asignado y desasignada cuando el proceso termina A diferencia de la SGA, la PGA es utilizada por solo un proceso 23 Instituto Profesional DuocUC Escuela de Ingeniería Estructura de Procesos Programa que dependiente del tipo de información que pueda ser requerida, ejecuta una serie de pasos o ejecuta una tarea específica Oracle toma ventaja de varios tipos de procesos: • User process – Se levantan cuando un usuario inicia una conexión • Server process – Conectados a una instancia Oracle y levantados cuando se establece una sesión • Background process – Disponibles cuando una instancia Oracle es levantada o iniciada 24 Instituto Profesional DuocUC Escuela de Ingeniería User Process • • • Si un usuario requiere información de una base de datos Oracle, primero debe establecer una conexión con el Servidor Oracle Para establecer la conexión se requiere de una herramienta de interface tal como SQL*PLUS y en ese instante, se levantan los procesos de usuario Los procesos de usuario no interactúan directamente con el Servidor Oracle 25 Instituto Profesional DuocUC Escuela de Ingeniería Server Process • • • Un proceso servidor es un programa que interactúa directamente con el Servidor Oracle – Genera llamadas y entrega resultados – Puede ser dedicado o compartido Servidor dedicado significa que atiende a un solo proceso de usuario, cuando el proceso de usuario se desconecta el proceso servidor es terminado Servidor compartido significa que un proceso servidor puede atender a varios procesos de usuarios 26 Instituto Profesional DuocUC Escuela de Ingeniería Background Process La relación entre las estructuras físicas y de memoria son mantenidas y son hechas por procesos Background Oracle • Procesos Obligatorios – SMON = System Monitor – PMON = Process Monitor – DBWn = Database Writer – LGWR = Log Writer – CKPT = Checkpoint • Procesos Opcionales (ARCn, CJQn, Jnnn, Qnnn, QMNn, Pnnn, Dnnn, Snnn, MMAN, MMON, MMNL, RVWR, CTWR, RECO) Procesos Background SMON: Ejecuta la recuperación de una instancia ante una caída, limpieza de estructuras de datos de soporte a la ejecución de consultas y llevar la BD a un estado estable previo a la ejecución de las transacciones que no hayan culminado exitosamente, desfragmentar el espacio físico de almacenamiento uniendo bloques de datos libres en la memoria secundaria. PMON: Limpia las conexiones fallidas de usuarios a la base de datos, efectúa labores de limpieza (libera los recursos y bloques ocupados en los cache) si algún proceso termina prematuramente. DBWn: Escribe los bloques de memoria modificados en la SGA (Database Buffer Cache) a los datafiles en disco. La n en algunos sistemas operativos indica que más de uno de esos procesos puede estar ejecutándose. En esos casos, la n es reemplazada por un valor numérico. Por ejemplo, si están corriendo tres procesos database writer, estos denominados DBW0, DBW1 y DBW3. Cuando una transacción cambia los datos de un bloque de datos, no es necesario que este bloque se escriba inmediatamente en el disco. Normalmente escribe solo cuando se requieren nuevos bloques de datos en el Database Buffer Cache. 27 Background Process (continuación) LGWR: Escribe información de la SGA (Redo Log Buffer) a los archivos de redo log en disco, con el propósito de recuperación. La escritura de bloques es secuencial y ocurre si: a) El Redo Log Buffer esta lleno en un 33% o más, b) Cuando ocurre un timeout (3 segundos), c) antes que el DBWn escriba algún bloque modificado a disco y cuando hay un COMMIT CKPT: Actualiza los archivos de la base de datos seguidos de los eventos de checkpoint. Este proceso es opcional, sino existe sus funciones son reemplazadas por el LGWR Procesos opcionales ARCn: Copia información para recuperación escrita por el LGWR a los Red Log Files y a una segunda localización en caso de ser necesario para recuperación. Casi todas las bases de datos de producción usan este proceso opcional, que se configura en el archivo de parámetros de inicialización de la base de datos. CJQn: Asigna jobs a Colas de Procesos de Trabajos (Job Queue) cuando se usa la característica de Job Scheduling Jnnn: Ejecuta jobs de base de datos que han sido esquematizados, cuando se usa la característica de Job Scheduling 28 Instituto Profesional DuocUC Escuela de Ingeniería Estructura Lógica La estructura lógica de la arquitectura Oracle se conoce como el espacio físico de una base de datos a ser usada La jerarquía existente en esta estructura consiste de: • Una base de datos Oracle esta agrupada de TABLESPACES • Un tablespace puede contener 1 o mas SEGMENTS • Un segmento esta hecho de EXTENTS • Un extent esta hecho de BLOCKS lógicos • Un block es una pequeña unidad para operaciones de Read y Write Un tablespace físicamente corresponde a un Datafile Detalle sobre la Creación y Administración de Tablespace ser vera en Lecciones posteriores 29 Instituto Profesional DuocUC Escuela de Ingeniería Fin de la Lección Jaime Amigo P. © 2006, Santiago - Chile