Componentes de una BD - · PDF fileOracle Database 10 g: Taller de Administración I 1-2...

18

Transcript of Componentes de una BD - · PDF fileOracle Database 10 g: Taller de Administración I 1-2...

Oracle Database 10g: Taller de Administración I 1-2

Componentes de una BD

Cada BD Oracle en ejecución está asociada a una instancia Oracle. Cuando se arranca el servidor, el software deOracle reserva una zona de memoria compartida denominada System Global Area (SGA) y comienza la ejecución deun conjunto de procesos background. La combinación de SGA y los procesos Oracle se denomina instancia Oracle.

Cuando se inicia la instancia, Oracle lee un archivo de parámetros de inicialización y la instancia se configura segúnlas instrucciones que contenga dicho archivo de parámetros, asociándose a una BD concreta. Esto es lo que sedenomina montaje de la BD. Una vez que se inicia la instancia y se abre la base de datos, los usuarios puedenacceder a la misma.

Varias instancias pueden coexistir simultáneamente en una misma máquina, pero cada instancia trabaja sobre unasola BD. Es posible que múltiples instancias accedan a una misma BD.

Cada instancia tiene sus propias características, por ejemplo, el tamaño de la zona de memoria reservada. Tal comose ha mencionado anteriormente, estas características están definidas mediante los parámetros almacenados en elfichero de inicialización (SPFILE o INIT). El archivo de inicialización se lee durante el inicio de la instancia y eladministrador de la BD puede modificarlo. En este caso, las modificaciones que se realizan en este archivo nosurten efecto hasta la siguiente operación de inicio de la instancia.

Oracle Database 10g: Taller de Administración I 1-3

Estructuras de Memoria Oracle

Las estructuras de memoria básicas asociadas a una instancia Oracle incluyen el System Global Area (SGA), compartidapor todos los procesos de servidor y background, y el Program Global Area (PGA), privado para cada proceso deservidor y en segundo plano (hay un PGA para cada proceso).

1) System Global Area (SGA): Es un área de memoria compartida que contiene datos e información de control parala instancia. Permite a los usuarios de la BD compartir la información sobre los datos, su estructura e incluso lasinstrucciones SQL que se emplean con más frecuencia. Su tamaño se establece mediante diferentes parámetrosdel fichero INIT.ORA. Esta zona se libera al parar la instancia.

Es posible cambiar la configuración del SGA mientras la BD se encuentra en funcionamiento, sin necesidad decerrarla. De este modo, es posible aumentar o reducir su tamaño según convenga en función de la carga detrabajo que soporte en cada instante. El tamaño del área SGA puede influir en los tiempos de respuesta. Cuantomás grande sea más trabajará Oracle en memoria y menos accesos hará a disco.SGA incluye las siguientes estructuras de datos:

• Caché de buffers de la BD: Almacena en caché los bloques de datos e índices de usuarios correspondientes a laimagen anterior/posterior de una modificación. Está formada por el Buffer de Datos y el Buffer de Rollback. Elnúmero de bloques que forman la caché de datos viene establecido en el parámetro DB_BLOCK_BUFFERS deINIT.ORA.La caché de buffers de la BD incluye un conjunto de bloques que almacenan una parte del diccionario de datosen memoria para evitar un acceso sistemático al disco: es lo que se llama diccionario caché. Entre la informaciónalmacenada en estos bloques se incluyen los datos de las cuentas de usuario, los nombres de los archivos dedatos, los nombres de los segmentos de Rollback, la ubicación de las extensiones, las descripciones de las tablasy los privilegios.

Oracle Database 10g: Taller de Administración I 1-4

Estructuras de Memoria Oracle (continuación)

SGA incluye, además:• Buffer de redo log: Almacena en caché los registros redo log hasta que se puedan escribir en los archivos redo

log almacenados en disco. Su tamaño viene establecido en el parámetro LOG_BUFFER de INIT.ORA.• Pool compartido: Almacena en caché objetos que se pueden compartir entre usuarios, como cursores,

procedimientos almacenados o estructuras de control.• Pool grande: Área opcional utilizada para ciertos procesos pesados, como almacenar en buffer las solicitudes de

E/S grandes u operaciones de backup y recuperación• Pool Java: Es utilizado para todos los códigos y datos Java específicos de la sesión dentro de la Java Virtual

Machine (JVM)• Pool de Streams: Utilizado por Oracle Streams.

2) Zona PGA: Zona de la memoria que contiene datos e información de control para cada proceso de servidor. Unproceso de servidor es un proceso que se ocupa de las solicitudes de un cliente. Cada proceso de servidor tiene supropio área PGA creada al iniciar el proceso de servidor. El acceso es exclusivo para dicho proceso de servidor y selee y escribe sólo mediante código de Oracle que actúa en su nombre.

El PGA contiene los siguientes elementos:• Memoria de la sesión: Memoria asignada para contener las variables de sesión, entre otra información.• Área SQL privada: Contiene datos como información de enlace y estructuras de memoria de tiempo de

ejecución. Cada sesión que emite una sentencia SQL tiene un área SQL privada, denominada cursor, donde sealmacena el texto de la sentencia SQL y la ruta de acceso a los datos. El tamaño del cursor y el número decursores por usuario pueden ser parametrizados por el DBA mediante el parámetro OPEN_CURSORS del ficheroINIT.ORA. Una buena utilización de los cursores por las aplicaciones puede tener influencia sobre los tiempos derespuesta.El tamaño del área SQL puede modificarse dinámicamente mediante el parámetro SHARED_POOL_SIZE.

Oracle Database 10g: Taller de Administración I 1-5

Estructura de los procesos

Cuando se llama a una aplicación o herramienta Oracle, como Enterprise Manager, el servidor Oracle crea unproceso servidor para ejecutar los comandos solicitados por la aplicación.

Además, crea un conjunto de procesos background propios de la instancia que interactúan entre sí y con el SO paragestionar las estructuras de memoria, la ejecución asíncrona de operaciones de E/S para escribir datos a disco, yejecutar otras tareas.

Oracle Database 10g: Taller de Administración I 1-6

Procesos background

Una instancia Oracle está compuesta por un conjunto de procesos en segundo plano, y los procesos de usuario quesolicitan información a dichos procesos. Los procesos background relacionan las estructuras físicas y de memoria dela BD. Su número varía en función de la configuración de la BD. Son creados en el arranque de una instancia yfuncionan de una forma asíncrona, teniendo cada uno de ellos un cometido muy específico, como se muestra acontinuación.

DBWn (Database Writer): Es el proceso encargado de escribir bloques modificados de la caché de buffers de la BDen los archivos del disco.

LGWR (Log Writer): Este proceso escribe secuencialmente en el Archivo Redo Log los registros Log ubicados en lazona de buffer de Log. Estos registros corresponden a los datos modificados y garantizan la posibilidad de restaurarla BD ante un fallo.

La escritura se produce cuando una transacción finaliza o cuando el buffer de Log está lleno. En este último caso,LGWR escribe sobre el archivo Redo Log todos los registros Log que contienen la transacción y su estado.

Es posible crear múltiples esclavos LGWR para mejorar el rendimiento de la escritura en los archivos Redo Log. Elnúmero de esclavos LGWR de E/S en ejecución se configura mediante el parámetro LGWR_IO_SLAVES del archivoINIT.ORA de la BD.

SMON (System Monitor): Este proceso tiene como tarea principal la restauración de la coherencia de la BDdurante su arranque. Al lanzamiento de la BD, el cometido de SMON consiste en verificar si la parada fue normal laúltima vez; en este caso no tiene nada que hacer. En caso contrario, el SMON restaura la BD recuperando desde elarchivo Redo Log las modificaciones que han sido terminadas (por un COMMIT o un ROLLBACK) y que Oracle nohabía aún escrito en la BD antes de la parada anormal.

SMON cumple una segunda función: agrupa extensiones libres contiguas formando extensiones de mayor tamaño.

Oracle Database 10g: Taller de Administración I 1-7

Procesos background (continuación)

PMON (Process Monitor): El proceso monitor interviene cuando un proceso de usuario tiene un problema ocuando este termina anormalmente. Esta intervención consiste en liberar los recursos ocupados por el proceso deusuario y suprimir este último de la lista de procesos de usuario de la instancia, además de deshacer la transaccióninterrumpida. Al igual que SMON, se activa de forma periódica para comprobar si es necesaria su intervención.

CKPT (Checkpoint): Los checkpoints ayudan a reducir la cantidad de tiempo necesario para realizar la recuperaciónde las instancias. Hacen que DBWR escriba en los archivos de datos todos los bloques que se hayan modificado porparte de transacciones confirmadas desde el último checkpoint, y que actualice los archivos de control y lascabeceras de los archivos de datos para registrar el checkpoint.

Los checkpoints se producen de forma automática cuando se llena el buffer de Log. Para aumentar la frecuencia delos checkpoint pueden utilizarse los parámetros LOG_CHECKPOINT_INTERVAL y LOG_CHECKPOINT_TIMEOUT,especificados en el archivo INIT.ORA.

ARCn (Archiver): Este proceso es opcional. Cuando está activo, su misión consiste en archivar (copiar) cada uno delos archivos Redo Log lleno en un dispositivo particular.

Una vez copiado un archivo Redo Log en el soporte de seguridad, este puede ser reutilizado en escritura para elproceso LGWR. Estas copias de seguridad podrán ser utilizadas para restaurar una BD cuando esta haya sidoperdida.

Se pueden crear varios esclavos ARCH de E/S, para mejorar el rendimiento de escritura en los archivos Redo Log. Elnúmero de esclavos ARCH se define mediante el parámetro ARCH_IO_SLAVES del archivo INIT.ORA de la BD.

Oracle Database 10g: Taller de Administración I 1-8

Proceso servidor y caché de buffers de la BD

Cuando se realiza una consulta, el proceso DBWR busca, en primer lugar, en la caché de buffers de la BD el bloquede datos que necesita. Si no lo encuentra, el proceso servidor lee el bloque desde el archivo de datos y coloca unacopia en la caché de buffers de la BD. De este modo, si suceden peticiones de otras consultas del mismo bloque dedatos ya no precisarán lecturas físicas.

DBWR también es el proceso encargado de escribir bloques modificados de la caché de buffers de la BD en losarchivos del disco. Realiza escrituras por lotes de los bloques de la caché de datos y de la caché del diccionario dedatos a los Archivos de Datos. Para cada sentencia de actualización (UPDATE, INSERT o DELETE) el DBWR copia losregistros originales en la parte del buffer de Rollback de la SGA y efectúa las modificaciones sobre los bloques de laparte buffer de datos. A continuación escribe un registro en la parte del buffer de Log.

En caso de validación de una transacción (COMMIT), el DBWR libera el espacio de los registros de la transacción enel buffer de Rollback. En caso de anulación de la transacción (ROLLBACK), los registros de rollback sustituyen a loscorrespondientes en el buffer de datos de modo que estos últimos recuperan su estado inicial. En ambos casos,DBWR escribe un nuevo registro en el buffer de Log.

El DBWR es el encargado de escribir en el archivo de datos principalmente en los tres casos siguientes:

1. Cuando Oracle necesita espacio en la caché de datos

2. Tras haberse modificado un cierto número de bloques

3. A la salida de un punto de control (checkpoint). En este último caso, el DBWR escribe sobre el disco todos los bloques modificados por transacciones confirmadas después de la última escritura.

Cuando el buffer de Log está lleno también se dispara automáticamente un punto de control.

Oracle Database 10g: Taller de Administración I 1-9

Oracle Database 10g: Taller de Administración I 1-10

Oracle Database 10g: Taller de Administración I 1-11

Oracle Database 10g: Taller de Administración I 1-12

Proceso servidor y caché de buffers de la BD (continuación)

Es posible tener múltiples procesos DBWR ejecutándose a la vez, en función de la plataforma y del SO. La utilizaciónde varios procesos DBWR ayuda a minimizar la contienda dentro del DBWR durante operaciones de gran tamañoque afecten a varios archivos de datos. El número de procesos DBWR en ejecución se configura mediante elparámetro DBWR_WRITER_PROCESSES del archivo INIT.ORA.

El servidor Oracle aplica el algoritmo LRU (se eliminan en primer lugar los bloques de menor uso) a la hora delocalizar nuevos bloques en la caché de buffers de la BD.

Los buffers de la caché pueden estar en los siguientes estados:• Bloqueado: Hay varias sesiones que lo retienen para escritura del mismo bloque a la vez. Además, hay otras

sesiones esperando para acceder al bloque.• Limpio: El buffer está desbloqueado y es candidato para cambiar su contenido si éste no se referencia de

nuevo.• Libre: El buffer está vacío porque la instancia acaba de arrancarse.• Sucio: El buffer no está bloqueado pero sus contenidos se han modificado, por lo que debe ser copiado a

disco (por medio del proceso DBWR) antes de pasar al estado limpio.

Oracle Database 10g: Taller de Administración I 1-13

Oracle Database 10g: Taller de Administración I 1-14

Oracle Database 10g: Taller de Administración I 1-15

Oracle Database 10g: Taller de Administración I 1-16

Oracle Database 10g: Taller de Administración I 1-17

Oracle Database 10g: Taller de Administración I 1-18