ARQUITECTURA DE ORACLE Arquitectura de Bases de Datos Maestría de Ingeniería de Sistemas y...
-
Upload
custodia-matas -
Category
Documents
-
view
8 -
download
1
Transcript of ARQUITECTURA DE ORACLE Arquitectura de Bases de Datos Maestría de Ingeniería de Sistemas y...
ARQUITECTURA DE ORACLE
Arquitectura de Bases de Datos
Maestría de Ingeniería de Sistemas y Computación
Universidad Nacional de Colombia
Ing. Wilson Soto
INSTANCIA
Estado que presenta una base de datos en un tiempo dado.
Es posible que muchas instancias accedan a una única BD esta opción es conocida como Real Application Cluster (RAC).
Los parámetros que determinan el tamaño y la composición de una instancia se almacena en un archivo de inicialización init.ora o bien residen dentro de la BD, en un archivo de parámetros, conocido como SPFILE el cual esta almacenado en spfile.ora. Este archivo se lee durante el arranque de la instancia.
Los Datos de una BD son almacenados en archivos físicos llamados datafiles en los discos. Internamente existen estructuras de la BD que proporcionan una asignación lógica de los datos con los archivos, lo que permite almacenar de forma separada diferentes tipos de datos. Estas divisiones lógicas se llaman espacios de tablas (tablespaces).
Así la división lógica de los objetos de BD entre varios espacios de tablas permite que dichos objetos se almacenen de forma física en archivos separados que pueden situarse en discos distintos.
DIVISION LOGICA DE LA BD
Estructuras Internas de las BD
• Las internas de la BD (Tablas, usuarios y esquemas, índices, vistas, secuencias, procedimientos, funciones, paquetes y triggers, sinónimos, privilegios, roles, enlaces de BD, segmentos, extensiones y bloques, segmentos de rollback (anulación)).
• Las internas a las áreas de memoria (áreas de memoria compartida y los procesos).
• Las externas a la BD
• ORACLE utiliza procesos de background que son compartidos por todos los usuarios.
Database
Instance
SGA
Redo logbuffer
Data buffercache
Shared pool
Data dict.cache
Librarycache
PMON DBW0SMON LGWRCKPT Others
Userprocess
Serverprocess
PGA
Control files
Data files
Redo logfiles
Archived log files
Parameterfile
Passwordfile
Estructuras de memoriaEstructuras de memoria
Procesos de Background Procesos de Background
Archivos Archivos
La cual es privada para cada instancia o utilizada por un único proceso del usuario de ORACLE y además por los procesos de Background.
Existe una PGA por cada proceso. La PGA contiene lo siguiente:
Stack areasData areas
PGA (Program Global Area)
• Es un grupo de estructuras de memoria compartida que contiene datos e información de control para una instancia de la BD.
• Almacena la mayor parte de la información sobre la propia estructura de la BD que es consultada con mas frecuencia.
• La SGA y los procesos constituye en ORACLE la instancia.
• Cada instancia tiene una propia SGA.
SGA (System Global Area)
La SGA contiene las siguientes estructuras de datos:
Data buffer cacheRedo log bufferShared poolJava poolLarge pool (opcional)
Data buffer cacheEs una parte de la SGA que mantiene copias de los bloques de la base de datos que son leídos desde los data files. Todos procesos de los usuarios concurrentemente son conectados a la instancia compartida para acceder al database buffer cache o bufer del bloque de datos.
El tamaño del cache del búfer del bloque de datos vienen determinado por el parámetro DB_BLOCK_BUFFERS del init.ora de dicho servidor de BD. La gestión del tamaño del cache del bufer del bloque de datos juega un importante papel en la gestión y ajuste de la BD.
ORACLE gestiona el espacio disponible mediante un algoritmo de menos utilizado recientemente LRU (least rencently used). Cuando se necesita espacio libre en el cache, se escriben al disco los bloques menos utilizados recientemente, siendo sustituidos por nuevos bloques de datos. De esta forma, en la memoria se conservan los datos utilizados con mas frecuencia.
El Data buffer cache y el shared pool esta dividido en múltiples asignaciones de segmentos.Esta organización en múltiples segmentos lógicos reduce la contención sobre sistemas multiprocesos.
Es un buffer circular en la SGA que mantiene la información de los últimos cambios realizados a la BD (registra los cambios realizados).
Esta información es almacenada en las entradas Redo conteniendo la información necesaria para reconstrucción (rehacer cambios hechos) a la base de datos por instrucciones DML y DDL.
Se escriben en los archivos de registro rehacer en línea de forma que puedan utilizarse en las operaciones de reconstrucción durante las recuperaciones de la BD.
Redo log buffer
Las entradas redo son copiadas por la instancia de procesos desde el espacio de memoria del usuario al buffer de redo log en la SGA. Las entrada redo toman en forma contigua el espacio en el buffer. Los procesos de background LGWR escriben los redo log buffer en línea o grupos de archivos sobre disco.
La inicialización del parámetro LOG_BUFFER determina el tamaño en bytes de los buffers de redologs. Por lo general, los grandes valores reducen el log de IO, en especial si las transacciones son numerosas. El default es 4 veces el máximo del bloque de datos para el Sistema Operativo.
Shared pool
Shared pool
LIBRARY CACHE
DATA DICTIONARY CACHE
La librería cache contiene las sentencias SQL, procedimientos, packages y estructuras de control.
El diccionario cache contiene tablas, columnas, objetos, privilegios.
La segunda vez que cualquier usuario ejecuta una sentencia SQL idéntica, puede aprovecharse la información de análisis disponible en el fondo común SQL compartido para acelerar su ejecución.
El tamaño total del Shared pool es determinado por la inicialización en SHARE_POOL_SIZE. El valor default de este parámetro es de 8M sobre plataformas de 32 bits y 64 M sobre plataformas de 64 bits.
Mientras la cache de buffers de bloques de datos y la cache de diccionario permiten que los usuarios de BD compartan información sobre los datos y su estructura, la cache de biblioteca permite que compartan instrucciones SQL que se emplean con mas frecuencia.
Esta área contiene el plan de ejecución y el árbol de análisis de las instrucciones SQL que se ejecutan en la BD.
Si hay mas de un usuario ejecutando al mismo tiempo una unidad de programa, el área compartida es usada por todos los usuarios, cada usuario mantiene una copia de su área privada SQL, manteniendo valores específicos para su sesión.
Java pool
Satisface los requisitos de análisis de los comandos JAVA.
JAVA_POOL_SIZE se debe definir en el parámetro de inicialización. Ejemplo en UNIX el tamaño predeterminado es 24 M este se debe definir un mínimo basado en el tamaño del granulo de la BD.
Large pool
Es una memoria opcional. Si se utiliza la opción de servidor compartido o si lleva a cabo operaciones de copia de seguridad o restauración con frecuencia, estas operaciones pudieran resultar mas eficientes si creara un área de bloques de gran tamaño.
El administrador de la BD puede configurar la memoria teniendo encuentra:Procesos de I/O.Operaciones de backup y recuperación.Sesiones de memoria compartida con mas de una BD. Esta se establece en el parámetro de inicialización LARGE_POOL_SIZE.
Procesos ORACLE
Responde a todos los procesos que están conectados a la instancia
Ejecuta sentencias SQL de la aplicación
Lee bloques de datos desde un datafiles sobre el disco intercambiando buffers de la SGA
Retorna resultados con los pasos dados en la aplicación
Procesos de Background
El máximo rendimiento entre muchos usuarios, multiprocesos y adicionalmente procesos.
• DATABASE WRITER = DBW0• LOG WRITER = LGWR • CHECKPOINT = CKPT• SYSTEM MONITOR = SMON• ARCHIVER = ARCH• RECOVER = RECO
DBWn
Escribe el contenido a los buffers de archivos de datos (datafiles). Es el responsable de escribir modificaciones en la base de datos del buffer cache memoria a disco. Cuando modifica algún dato en la BD por ejemplo insertar, actualizar o eliminar, no solo modifican los datos en el disco. Cuando un hilo del usuario quiere leer un nuevo bloque de datos en la memoria pero no queda espacio libre o cuando el sistema realiza un control.Toda instancia de ORACLE tiene al menos un DBW. Los sistemas que deben soportar un gran volumen de rendimiento de transacciones pueden funcionar mejor con dos o mas hilos.
LGWR
Este hilo registra la información sobre los cambios realizados a todas las transacciones que se confirman.
ORACLE registra el registro de transacciones así:
1. A medida que se realiza una transacción, ORACLE crea pequeños registros llamados redo log, que contienen justo la información necesaria para volver a generar los cambios realizados por la transacción.
2. ORACLE almacena temporalmente las entradas redo log de las transacciones en el buffer del registro redolog de la instancia. El buffer del registro redolog de la instancia es una memoria pequeña que hace de cache temporal para las entradas redolog de la transacción para todas las transacciones del sistema.
3. Cuando se le pide a ORACLE que confirme la transacción LGWR lee las correspondientes entradas redolog desde el buffer del registro redolog y las escribe en el registro de transacciones de la BD. El registro de transacciones de la BD es un conjunto de archivos dedicados a registrar las entradas redolog creadas por todas las transacciones del sistema.
Database
Instance
LGWR
SGA
Redo logbuffer
Data buffercache
Shared pool
COMMIT ProcessingCOMMIT Processing
1
2
34
Userprocess
Serverprocess
Control files
Data files
Redo logfiles
ARCH
Hace una copia de seguridad de los archivos históricos de transacción automáticamente después de que LGWR los llene con las entradas rehacer. El conjunto secuencial de archivos históricos de transacción archivado que crea ARCH recibe el nombre global de registro de transacciones rehacer fuera de línea de la base de datos. Si una BD sufre una falla por ejemplo un disco, ORACLE usa las copias de seguridad de la BD y el registro de transacciones para recuperarla y todas las transacciones confirmadas.
CKPT
Periódicamente el DBWR realiza un control. Durante un control, DBWR escribe todos los bloques de datos modificados desde memoria a los archivos de datos de la BD. El propósito de un control es establecer indicadores de consistencia de transacciones en el disco. Después de realizar un control, los cambios realizados por todas las transacciones se han escrito en los archivos de datos. Por lo tanto un control indica cuantas entradas rehacer del histórico debe aplicar ORACLE si el servidor deja de funcionar y existe la necesidad de recuperar la BD.
SMON
Durante el procesamiento de las BD, realiza muchas operaciones internas. Cuando se arranca la BD SMON realiza la recuperación de la instancia, según lo que se necesite utilizando archivos del registro rehacer.
También limpia la BD eliminando objetos de las transacciones que el sistema ya no necesita. Agrupa extensiones libres contiguas en extensiones libres mayores.
PMON
En ocasiones las conexiones de usuario no terminan correctamente. Por ejemplo un error de red puede desconectar sesiones. El SMON (System monitor) avisa de cuando han dejado de funcionar las conexiones del usuario. PMON borra después las conexiones huérfanas deshaciendo las transacciones de la sesión muerta y liberando cualquiera de los recursos de sesión que podrían de otra forma bloquear a otros usuarios.
RECO
ORACLE puede soportar sistemas de BD distribuidas y transacciones distribuidas.
Se activa automáticamente para resolver todas la transacciones distribuidas dudosas a medida que estas ocurren.
RECO resuelve el resultado local de una transacción distribuida dudosa para que coincida con el resultado de la transacciones en otros nodos. Parámetro en el init.ora superior a 0 DISTRIBUTED_TRANSACTIONS.