Download Componentes Arquitectura Oracle

Document related concepts
no text concepts found
Transcript
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