Clase 1: Estructuras, Procesos y Diccionario de Datos

Anuncio
Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
Clase 1: Estructuras, Procesos y Diccionario de Datos
–
Estructura de la memoria
–
–
–
–
–
System Global Area
–
Buffer Cache
–
Redo Log Buffer
–
Share Pool
–
Dictionary Cache
–
Large Pool
Process Global Area
–
Private SQL Area
–
SQL Work Area
Arquitectura de los procesos
–
Tipos de procesos
–
Servidores Dedicados y no dedicados
–
Procesos del Servidor de Oracle
–
Servidores
–
Background(DBWn, LGWR, CKPT, SMOM, PMOM, RECO, ARCn, LMS, QMNn)
Estructuras Lógicas y Físicas
–
Estructuras Físicas
–
Relación entre estructuras Lógicas y Físicas
Diccionario de Datos –
Vistas Estáticas
–
Vistas Dinámicas
Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
Estructura de la Memoria
•
System Global Area:
•
•
•
•
•
Es un grupo de estructuras de memoria que contienen datos e información de control para una instancia de una base de datos en Oracle. El SGA es compartido entre los usuarios. Un SGA y los procesos de Oracle constituyen una instancia de Oracle. Oracle automáticamente asigna memoria a un SGA cuando se levanta/inicia la instancia.
Con una infraestructura de SGA dinámico, el tamaño del buffer cache, el shared pool, large pool y área de memoria privada pueden ser alterados sin bajar/terminar la instancia..
Para un desempeño óptimo el SGA completo debe estar en memoria. Si no lo está y se utiliza la memoria virtual el desempeño puede decrecer dramáticamente a casa de la paginación por parte del sistema operativo del SGA.
Buffer Caché de la Base de Datos:
•
•
Es la porción del SGA que mantiene una copia de los bloques leídos de los archivos de datos. Todos los procesos de los usuarios conectados concurrentemente a la instancia compartida acceden al buffer caché de la base de datos
Organización del Buffer Caché de la Base de Datos
•
•
•
Write list: mantiene los buffers sucios, que contienen datos que han sido modificados, pero aún no han sido escritos a disco.
LRU list: mantiene los buffers libres, pinned y sucios que no han sido movidos aún a write list.
Free buffers: no contienen ningún dato útil y están disponible para su uso
Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
•
•
•
•
Cuando un proceso de Oracle accede un buffer, el proceso mueve el buffer a los más utilizados (MRU) al final de LRU list.
La primera vez que un proceso usuario requiere una pieza de datos, éste busca los datos en el buffer cache. Si el proceso los encuentra se tiene un cache hit. En caso contrario debe buscarlos en el archivo de catos y se tiene un cache miss.
Redo Log Buffer:
•
•
•
Es un buffer circular en el SGA que mantiene información acerca de los cambios hechos en la base de datos. Esta información es almacenadas en los registros de redo. Un registro de redo contiene la información necesaria para reconstruir o rehacer, los cambios hechos en la base de datos por las operaciones: INSERT, UPDATE, DELETE, CREATE, ALTER o DROP. Los registros de Redo son utilizados, en caso de ser necesarios para la recuperación de la base de datos.
Los registros de redo toman espacios continuos y secuenciales en el buffer.
Shared Pool:
•
•
•
Es la porción del SGA que contiene las tres áreas mayores: library cache, dictionary cache estructuras de control.
Library Cache: incluye las áreas de SQL compartidas y privadas en caso de que sea un servidor de múltiples transacciones. Los procedimientos PL/SQL y paquetes, estructuras de control como los locks y manejadores del caché de librerías.
Shared SQL Areas y Private SQL Areas: Oracle representa la ejecución de cada instrucción SQL con un área SQL privada y otra compartida. Reconoce cuando dos usuarios están ejecutando la misma instrucción SQL y reutiliza el área compartida para aquellos usuarios.
•
•
Pinned buffers: son aquellos que están siendo accesados actualmente.
Shared SQL Areas: un área compartida SQL contiene un árbol proveniente del análisis (léxico, sintáctico y semántico) de la instrucción y su plan de ejecución.
Dictionary Cache:
•
Es una colección de tablas y vistas de la base de datos que contienen información de referencia a cerca de la base de datos, sus estructuras y usuarios. Oracle accede los datos del diccionario frecuentemente durante el análisis de una instrucción de SQL. El diccionario de datos es accedido en dos ubicaciones especiales en la memoria designada para éste. Un área Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
es llamada data dictionary cache, también conocida como row caché porque mantiene los datos como tuplas en lugar de buffers (que son bloques de datos enteros). El otra área en memoria para mantener el diccionario es library cache.
•
Large Pool:
•
•
Provee grandes áreas de memoria para:
•
La información de la sesión para servidores compartidos
•
Procesos de I/O del servidor
•
Operaciones de backup y restore
Program Global Area:
•
•
Es una región de memoria que contiene datos e información de control para un proceso servidor. Es un área de memoria no compartida creada por Oracle cuando el proceso es iniciado. La cantidad total de memoria PGA asignada para cada proceso se denomina aggregated PGA memory.
Private SQL Area:
•
Contiene datos como información de enlace y estructuras de memoria a tiempo real. Cada sesión que genera una instrucción de SQL tiene un área SQL privada. Cada usuario que ejecuta una instrucción SQL tiene su área de SQL privada que utiliza una única área de SQL compartida. El área de SQL privada está dividida en dos áreas con tiempos de vida diferentes:
•
•
•
El área persistente que contiene, información que debe ser mantenida durante muchas ejecuciones de la misma instrucción por ejemplo, la información de contexto o conversiones de tipos de datos. Es liberado sólo cuando el cursor es cerrado. Debe tenerse cuidado cuando los cursores se manejan por la aplicación porque se consumen recursos.
Run­time area, contiene estructuras de memoria que son necesarias a tiempo de corrida como un árbol bitmap o hash, etc. Es liberada cuando la ejecución es terminada.
SQL Work Area:
•
Es utilizada para consultas complejas, que requieren grandes porciones del run­time Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
área con operaciones más intensivas en el uso de memoria como
•
Operaciones de ordenamiento
•
Hash­join
•
Bitmap merge
•
Bitmap create
Arquitectura de los Procesos
Un proceso es un hilo de control o un mecanismo en un sistema operativo que puede ejecutar una serie de pasos. Un proceso normalmente tiene su propia área de memoria privada en la cual se ejecuta.
Todos los usuarios conectados deben correr dos módulos de código para acceder a la instancia de una base de datos en Oracle: •
Una aplicación o herramienta de Oracle (como SQL*Plus), •
El código del servidor Oracle, ejecutado por cada usuario interpretará las instrucciones SQL.
Tipos de procesos
Procesos de usuario: ejecutando la aplicación o código de la herramienta Oracle
Procesos de Oracle: que ejecutan el código del servidor de Oracle. Esto incluye procesos servidores y de backgroud.
Servidores Dedicados y no dedicados
Con los servidores dedicados, para cada usuario, la aplicación de la base de datos es ejecutada por un proceso diferente que aquel que ejecuta el código del servidor de Oracle.
Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
Servidor Dedicado
Servidor Compartido
Con los servidores compartidos, la aplicación de la base de datos es ejecutada por un proceso diferente que aquel que ejecuta el código del servidor. Cada proceso servidor que ejecuta el código del servidor puede servir varios procesos de usuario.
Procesos del servidor de Oracle
Procesos Servidores
Oracle crea un proceso servidor para manejar las peticiones de cada usuario conectado a la instancia. Un proceso servidor lleva a cabo una o más de las siguientes tareas:
•
•
•
Análisis y ejecución de instrucciones SQL generadas a través de la aplicación
Lectura de los bloques de datos necesarias desde los archivos de datos en disco en el buffer shared del SGA. En caso de un miss caché.
Retornar resultados de alguna manera que la aplicación pueda procesar la información.
Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
Procesos Backgroud
Son provistos con el propósito de maximizar el desempeño y atender muchos usuarios. En muchos sistemas operativos, los procesos background son creados automáticamente cuando la instancia es iniciada. Entre ellos se tiene:
Database Writer Process (DBWn)
El (DBWn) escribe el contenido de los buffers en los archivos de datos. El proceso DBWn es responsable por la escritura de los buffers sucios del buffer cache al disco. Cuando un buffer en la base de datos es modificado, se marca como sucio. Un buffer frío es un buffer que no ha sido usado recientemente de acuerdo con el algoritmo LRU. El DBWn escribe buffers sucios y fríos al disco para que los usuarios puedan encontrar buffers limpios que puedan usarse para la lectura de nuevos bloques en el caché.
El proceso DBWn escribe buffers sucios al disco bajo las siguientes condiciones:
•
Cuando un proceso no puede encontrar un buffer limpio reusable después de haber recorrido un Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
número de determinado de buffers en el buffer caché, éste envía una señal al DBWn para la escritura. El DBWn escribe los buffers sucios al disco.
•
El DBWn periódicamente escribe los buffers cuando se lleva a cabo un checkpoint. Chekpoint es una posición en el hilo de redo (log) donde se iniciará luego la recuperación. La posición en el log esta determinada por el último buffer sucio en el buffer caché.
Log Writer Process (LGWR)
El proceso LGWR es responsable del manejo del redo log buffer, las escrituras del redo log buffer al archivo de redo log en el disco. El LGWR escribe todos los registros de redo que han sido copiados en el buffer desde la última vez que éste se escribió.
El redo log buffer es un buffer circular. Cuando LGWR escribe los registros del redo log buffer al redo log file, el proceso servidor puede copiar nuevos registros sobre aquellos que se pasaron a disco. LGWR normalmente escribe lo suficientemente rápido para asegurar que el espacio esté siempre disponible en el buffer para nuevos registros, aún cuando el accedo al redo log sea lento.
LGWR escribe en porciones contiguas del buffer al disco. El LGRW escribe
•
Un registro de commit cuando un usuario hace commit de una transacción
•
Redo log buffers
•
Cada tres segundos
•
Cuando el redo log tenga un tercio lleno
•
Cuando un proceso de DBWn escriba los buffers modificados a disco, si es necesario.
Cuando un usuario lleva a cabo una instrucción de commit, el LGWR coloca el registro de commit en el log buffer y escribe la transacción a disco inmediatamente en el redo log. Los cambios correspondientes a los bloques de datos en el buffer caché, son dejados hasta que se tenga una escritura más eficiente que hacer. Esto se denomina el mecanismo de fast commit. La escritura de un registro de redo del commit de la transacción es un evento atómico.
Checkpoint Process (CKPT)
Cuando un checkpoint ocurre. Oracle debe actualizar todos los encabezados de los archivos de datos con los detalles del checkpoint. Esta es una tarea del CKPT. El CKPT no escribe los bloques a Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
disco, realiza la llamada al DBWn para que éste lo haga.
System Monitor Process (SMON)
El proceso SMON lleva a cabo la recuperación, si es necesaria, de la instancia en el inicio de la misma. SMON también es responsable de limpiar los segmentos temporales que no estén en uso por algún tiempo y de determinar que algunos extents libres se encuentran continuos en un tablespaces dictionary managed.
Process Monitor (PMON)
PMON lleva a cabo procesos de recuperación cuando un proceso de usuario falla. Es responsable de la limpieza del buffer caché y liberación de recursos que el proceso estaba usando. Por ejemplo este restaura el status de la tabla de transacciones activas, libera los locks y remueve el ID del proceso de la lista de procesos activos.
Recover Process (RECO)
RECO es un proceso background usado con la configuración de bases de datos distribuida que resuelve automáticamente las fallas de las transacciones distribuidas.
Archiver Processes (ARCn)
El ARCn copia los archivos de redo log online al dispositivo de almacenamiento terceario. ARCn sólo está recent cuando la base de datos está en el modo ARCHIVELOG y la opción automatic archiving está activa.
Lock Manager Server Process (LMS)
LMS provee manejo de recursos entre instancias.
Queue Monitor Processes (QMNn)
QMNn es un proceso opcional de background para el encolamiento avanzado de Oracle, que monitorea las colas de mensajes. El encolamiento avanzado se usa con comunicación asíncrona. Los procesos envían los mensajes y en lugar de esperar por la respuesta siguen con su trabajo.
Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
Estructuras Lógicas y Físicas
Estructuras Físicas
Bloque de Datos del Sistema Operativo
El que se define al formatear el disco Unix generalmente los crea de 4k, pero el tamaño puede especificarse, Windows de 16k.
Data Files
Un tablespace en una base de datos consiste de uno o más datafiles físicos. Un datafile puede estar asociado con sólo un tablespace y sólo una base de datos. Oracle crea un datafile para un tablespace asignando una cantidad de espacio en disco más un overhead requerido para el encabezado del archivo, el espacio asignado es formateado pero no contiene ningunos datos.
Redo Log files
Mantienen información sobre los cambios realizados en la base de datos, son los que permiten llevar a cabo un procedimiento de recuperación en caso de fallas.
Archivos de Control
El archivo de control de una base de datos es un archivo binario pequeño para el inicio de la base de datos y su exitosa operación. Un archivo de control es actualizado continuamente por Oracle durante el uso de la base de datos, este debe estar disponible para la escritura siempre que la base de datos este abierta. Si por alguna razón un archivo de control no está disponible, entonces la base de datos no puede operar correctamente, por eso Oracle provee un mecanismo para mantener múltiples control files. Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
Un archivo de control contienen información asociada a la base de datos que es necesario para su acceso por una instancia, duran el inicio y operación normal. Entre otras cosas el archivo de control contiene:
•
El nombre de la base de datos •
El tiempo de creación de la base de datos
•
Los nombres y ubicaciones de los datafiles asociados y archivos de online redo log.
•
Información del tablespace
•
Datafiles offlines
•
El log history
•
Información del log archivado.
•
Registro de los datafiles offline.
•
Datafile de Backup y información del redo log.
•
El actual número de secuencia del log.
•
Información de checkpoint
Cada vez que un data file o archivo de redo log es añadido o renombrado o eliminado, el archivo de control es actualizado para reflejar los cambios de la estructura física con el propósito de:
•
Oracle pueda identificar los data files y archivos online redo log durante el inicio de la base de datos
•
Oracle puede identificar los archivos que son requeridos o disponibles en caso de recuperación de ser necesario.
Relación estructuras lógicas y físicas
Es un overview, las estructuras lógicas se explicarán detalladamente en la siguiente clase, pero Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
la relación entre ellas debe explicarse para que puedan entender la mayoría de las tablas del diccionario de datos que se da en esta clase...
Diccionario de Datos
Las tablas del diccionario de datos no se pueden acceder directamente, pero se puede acceder a la información contenida en ellas a través de las vistas del diccionario de datos. Para listas las vistas del diccionario de datos se puede consultar la vista DICTIONARY.
Vistas Estáticas
Las tablas y vistas son llamadas estáticas, porque ellas cambian sólo cuando un cambio es hecho al diccionario de datos, por ejemplo al crear una nueva tabla o autorizar algún usuario con privilegios. Muchas de las tablas del diccionario de datos tienen tres vistas correspondientes:
–
–
–
La vista con prefijo ALL_, muestra toda la información accesible al usuario actual, incluyendo la información del esquema del usuario, como la información de objetos en otros esquemas, si el usuario actual tiene acceso a esos objetos por medio de autorizaciones de privilegios o roles.
La vista DBA_ muestra toda la información relevante de la base de datos entera. Las vistas DBA_ se crearon para ser usadas únicamente por los administradores. Pueden ser accedidas únicamente por usuarios con el privilegio SELECT_ANY_TABLE.
La vista USER_ muestra toda la información del esquema del usuario actual. No se requieren privilegios para consultar estas vistas.
Las columnas de las vistas ALL_, DBA_ y USER_ corresponden a una única tabla del diccionario de datos y son usualmente idénticas.
Dar ejemplos....
Vistas Dinámicas
Oracle contiene un conjuntos de vistas que son mantenidas por el servidor y accesibles al usuario administrador de la base de datos SYS. Esas vistas son llamadas vistas de desempeño dinámico porque ellas son actualizadas continuamente mientras que la base de datos este abierta y en uso y su contenido esta relacionado principalmente al desempeño. Estas vistas monitorean la actividad de la Clase 1: Estructuras, Procesos y Diccionario de Datos
Claudia González
___________________________________________________________________________________
base de datos.
Aunque estas vistas parezcan ser tablas regulares, no lo son. Las vistas proveen datos en estructuras de disco internas y estructuras de memoria. Un usuario las puede consultar, pero nunca actualizar o alterarlas. Se pueden consultar las vistas de desempeño dinámico para extraer información de ellas. Sin embargo sólo consultas simples son soportadas. Si se realizan ordenamientos, joins y se utiliza la cláusula GROUP BY, es mejor copiar la información de las vistas V$ en otra tabla y luego consultarlas de esas tablas, debido a que la información en las vistas V$ es dinámica, la consistencia en la lectura no esta garantizada para la operación SELECT en esas vistas.
Dar ejemplos...
Descargar