Professional Documents
Culture Documents
Estructuras de memoria
Una instancia contiene 2 estructuras principales: SGA y PGA
SGA:
o Database Buffer Cache (Obligatoria).
o Log Buffer (Obligatoria).
o Shared Pool (Obligatoria).
Library cache.
Data Dictionary Cache.
Pl/Sql Area.
SQL Query y Pl/Sql function result Cache.
o Large Pool
o Java Pool
o Stream Pool
Es un rea de memoria relativamente pequea, puesto que los vectores de cambio que en ella se
escriben se vuelcan muy a menudo en Online Redo Logs.
Los vectores de cambio son las modificaciones aplicadas a los datos, este vector se escribe
primeramente en los Log Buffer y posteriormente se vuelcan en los OnLine Redo Log para que no
se pierda, de esta forma se garantiza que no se pierden datos y si ocurre algo sobre un Datafile
solo se tendran que recuperar una copia del Datafile y aplicar sobre ella los vectores de cambio
almacenados en los Online Redo Logs.
Los vectores de cambio no se escriben directamente en los Online Redo Logs porque supondra
mucho tiempo de espera al ejecutar sentencias DML, por eso se escriben en el Log Buffer y se
escribirn posteriormente de forma Batch.
La escritura de los Log Buffer en los Online Redo Logs se realizan a travs de un proceso llamado
LGWR.
Como se indic el tamao no es muy grande, normalmente de unos poco Megas, si fuese muy
grande al realizar el volcado en los Online Redo Logs se tardara mucho e incidira sobre el
rendimiento. El tamao por defecto lo determina Oracle y est basado en el nmero de CPSs por
nodo, si se cambia a un tamao menor Oracle lo vuelve a poner al tamaos por defecto mnimo.
La garanta de que durante una sentencia de COMMIT no se pierden datos es porque: primero se
guarda el bloque de datos de la cache que se ha cambiado a disco y despus se guardan los
vectores de cambio de los Log buffer a los Online redo Logs, solo si se ejecutan bien las dos tareas
se considera un xito el COMMIT, en caso contrario se deshacen las operaciones.
El Log Buffer se asigna el arrancar la instancia y no se puede redimensionar sin tener que reiniciar
tambin la instancia.
La escritura del Log Buffer a los Online Redo Logs es el ltimo cuello de botella que existe en
Oracle, no se puede realizar una operacin DML ms rpido que el proceso de escribir de los
vectores de cambio por el LGWR.
La nica forma de aumetar el rendimiento es con RAC, cada instancia tiene su propio Log Buffer y
su propio proceso LGWR.
Shared Pool.
Es la estructura ms compleja del SGA, est formada por decenas de otras estructuras
gestionadas por el servidor Oracle.
Se puede gestionar automticamente, y puede redimensionarse dinmicamente.
Las estructuras ms importantes que contiene son:
i. Library cache. rea de memoria que almacena el cdigo ejecutado ms recientemente ya
parseado. De esta forma se puede reusar dicho cdigo sin necesidad de volverlo a parsear.
ii. Data Dictionary Cache. Almacena definiciones de objetos recientemente usados como
descripciones de tablas, de campos, de ndices, permisos sobre objetos, metadata
iii. PL/SQL Area: Almacena objetos PL/SQL (funciones, procedimientos, paquetes, trigger,
variables). Estos objetos se almacenan en el diccionario de datos tanto en su formato fuente
como parseado, cuando se necesita se trae del diccionario y se almacena en esta rea para ser
usado ms veces si es necesario (no es ms que una cache).
iv. SQL query y PL/SQL Cache de resultados. La cache de resultados se usa a partir de la versin
11G, guarda los resultados de las ltimas consultas por si se reejecutan sentencias y son datos
que se pueden aprovechar. Esta opcin por defecto est desactivada.
El Shared Pool se puede redimensionar dinmicamente y gestionar automticamente.
Large Pool.
Es opcional, se usa automticamente por varios procesos que de otra manera tomaran memoria
del Shared Pool.
Se usa sobre todo cuando se configura el servidor Oracle con Procesos de Servidor compartidos
(varios procesos de usuario comparten un nico proceso de servidor).
Tamao dinmico y puede ser gestionado automticamente.
Java pool.
Se usa cuando existen procedimientos java almacenados en la base de datos que se ejecutan.
Tamao dinmico y puede ser gestionado automticamente.
Streams Pool.
Estructura de procesos
Hay 5 procesos principales:
o SMON (System Monitor)
o PMON (Process Monitor)
o DBWn (DataBase Writer)
o LGWR (Log Writer)
o CKPT (CheckPoint)
Otros procesos secundarios:
o MMON (Manegeability Monitor)
o MMML (Manegeability Monitor Ligth)
o MMAN (Memory Manager)
o ARCn (Archiver)
o RECO (Recover)
SMON
o Su principal cometido es montar y abrir la base de datos. Monta la base de datos localizando y
validando los fichero ControlFiles y despus abre la base de dtos localizando y validando los
Datafiles y los Online Redo Logs.
o Tambin se encarga de otras tareas como cotejar el espacio libre de los DataFiles.
PMON
o Se encarga de controlar sesiones de usuario que no terminen de forma ordenada, para ello
destruyen el proceso del servidor asociado a la sesin, libera la memoria PGA, hace RollBack de
transacciones incompletas
DBWn
o Escriben bloques de datos del Buffer Cache a disco.
o Hay un mximo de 20 procesos por instancia: DBW0, DBW1, DBW2,
o Los motivos por los cuales los bloques dirty se escriben del Buffer a disco pueden ser 4:
1. No hay bloques libres en el Buffer Cache. Si un proceso necesita llevar datos al buffer y este se
encuentra lleno se realiza una llamada al DBWn para que escriba algunos bloques de la cache al
disco y limpia esos bloques para que estn disponibles para los nuevos trados de disco.
2. Hay muchos bloques Dirty en el Buffer Cache. Cuando esto ocurre se lanza una peticin y los
DBWn vuelva en disco los menos recientemente usados y que estn Dirty.
3. Cada 3 segundos. Cada 3 segundos los procesos DBWn vualcan a disco bloques Dirty.
4. En respuesta a un CheckPoint. Durante un CheckPoint todos los bloques Dirty se vuelcan a disco,
todo y no solo unos cuantos. Durante el CheckPoint se sincronizan los Buffer Cache y los
DataFiles.
LGWR
o Escribe el contenido del Log Buffer en los Online Redo Logs Files que estn en disco.
o Casi se escriben en tiempo real y si se realiza un COMMIT si se hace en tiempo real.
o Es el ltimo cuello de botella de Oracle.
o Hay 3 motivos fundamentales para que el proceso LGWR acte:
1. Se lanza un COMMIT. LGWR guarda el Log Buffer a los Online Redo Logs, solo cuando acaba
esta escritura se considera acabado el COMMIT.
2. El Log Buffer est a 1/3 lleno. LGWR guarda los Log Buffer cuando estos llegan a 1/3 de su
capacidad.
3. Cuando el proceso DBWn escribe bloques dirty a los Datafiles lanza una llamada al LGWR para
que guarde los Log Buffer.
CKPT
o Desde la versin 8i se hacen Checkpoint parciales, es ms productivo y mejora el rendimiento.
o Durante un checkpoint se vuelca a memoria tanto el Buffer Cache como los Log Buffer.
o Solo se hace un checkPoint total a peticin o cuando se para la base de datos.
MMON
o Introducido en la versin 10G.
o Ayuda a la auto monitorizacin y auto tunnig de la base de datos.
o La instancia recopila muchas estadsticas sobre la actividad y rendimiento de la base de datos, estos
datos se almacenan en la SGA. MMON recopila estas estadsticas del SGA y las almacena en el
diccionario de datos.
o Cuando almacena uno de estos snapshot (conjunto de datos) por el MMON llama al ADDM, que es
una herramienta que analiza los dos ltimos snapshot con informacin estadstica y por medio de
un sistema inteligente realiza observaciones y recomendaciones para que aumente el rendimiento
de la base de datos.
MMML
o Es un proceso light que ayuda al MMON.
o Si la planificacin de MMON no es suficiente salta este proceso para ayudar a recopilar la
informacin estadstica.
MMAN
o Memory Manager.
o Permite la gestin automtica de la memoria.
o Solamente hay que especificar la memoria que se usar y el proceso asigna y gestiona esa memoria
entre la SGA y PGA.
ARCn
o Archiver
o Es opcional.
o Pueden existir hasta 13: ARC0, ARC1
o Los online Redo Log file se llenan, se usan de forma circular por lo que solo almacenan un espacio
de tiempo deteminado. ARCn realiza una copia de estos ficheros en otros fuera de lnea para que
se guarden permanentemente.
RECO
o Recoverer process.
o Una transaccin distribuida implica varias bases de datos, si alguna falla RECO se encarga de
realizar un rollback ordenado.
Otros procesos:
o CCJQ0, J000: Planificacin de trabajos.
o D000: Gestor de procesos que enva SQLs a servidos de procesos compartidos.
o DBRM: Gestor de recursos de la BD.
o DIA0: Responsable de detectar y resolver casos de bloqueos (deadLock).
o DIAG
o FBAR
o PSP0
o QMNC, Q000
o SHAD
o SMCO,W000
o VKTM
Estructura de almacenamiento
Existe una abstraccin lgica de la estructura fsica.
El almacenamiento lgico se realiza en segmentos.
Los segmentos estn almacenados en los Datafiles.
Estructura fsica
Existen 3 tipos de ficheros fsicos principales:
1. ControlFiles.
Existe un Controlfile y varias copias de l (como norma). Deba haber como mnimo 1 y como mximo
8.
Es de pequeo tamao pero vital.
Contiene punteros hacia:
Localizacin de los Online Redo Logs Files.
Localizacin de los Datafiles.
Los Archives ms recientes.
Varias secuencias numricas y de fechas.
Estructura lgica
Mencionar brevemente el diccionario de datos:
Contiene le matada datos.
Describe la base de datos tanto fsica como lgicamente.
Se almacena en segmento de los TableSpace SYSTEM y SYSAUX.
Contiene una serie de tablas y vistan con todos los datos administrativos de la base de datos y de
todos los objetos de la misma. Muchas de estas vistas y tablas contienen 3 prefijos que tienen un
significado especial:
o DBA_ => Datos a los que el DBA tiene acceso, a todo.
o USER_ => Datos del usuario.
o ALL => Datos a los que el usuario puede acceder.