miércoles, 27 de abril de 2011

¿Qué es un PGA de Oracle?

Program/Private Global Area, y es la memoria privada de cada proceso servidor. En esta memoria cada proceso almacena información que sólo es necesaria para su propio funcionamiento como por ejemplo sus variables globales, el estado actual de cada cursor (SQL) que se ejecuta.

Esta zona de memoria no se puede compartir.

La PGA se compone de:



Área SQL privada: cada SQL que se ejecuta necesita de este espacio para poder llevar el control de las operaciones propias de la sentencia. Se asigna cuando se abre el cursor y se libera completamente cuando se cierra. Esta parte de memoria se subdivide en dos:



  1. área persistente: perdura durante toda la vida del cursor. Guarda las bind variables además de otras cosas.
  2. área en tiempo de ejecución: se libera cuando finaliza la ejecución de la sentencia SQL (aunque no se haya cerrado el cursor ). Constituyen las áreas de trabajo (working areas) que se explican más adelante.


El número máximo de cursores, y por tanto, el número máximo de áreas SQL privadas, que un usuario puede tener abiertos al mismo tiempo se controla con el parámetro OPEN_CURSORS. También hay que tener en cuenta que esta área SQL privada se almacena en la PGA si la Instancia está configurada como servidores dedicados (dedicated servers). En caso de servidors compartidos (shared servers) se almacena en la SGA.

Memoria de las sesiones: guarda información relativa a la sesión como el login, variables de sesión... etc. En servidores compartidos (shared servers) este área pasa a ser pública ya que diferentes usuarios comparten los mismos procesos servidores.

¿Qué es un SGA de Oracle?

El área global del sistema (SGA) es un grupo de áreas de memoria compartida que se dedican a un Oracle "instancia" (un ejemplo es su base de datos de programas y la memoria RAM).

Todos los procesos de Oracle utiliza el SGA para guardar información. El SGA se utiliza para almacenar los datos de entrada (los datos de tampones según lo definido por el parámetro db_cache_size), y la información de control interno que es necesario para la base de datos. Usted controla la cantidad de memoria que se asignará a la SGA mediante el establecimiento de algunos de los "parámetros de inicialización" de Oracle. Estos podrían incluir db_cache_size, SHARED_POOL_SIZE y log_buffer.

En Oracle Database 10g sólo tiene que definir dos parámetros (sga_target ysga_max_size) para configurar el SGA. Si estos parámetros se configuran, Oracle va a calcular la cantidad de memoria para asignar a las diferentes áreas del SGA con una función llamada Administración de memoria automática (MOA). A medida que adquiera experiencia que usted lo desea, puede asignar manualmente la memoria para cada zona de la SGA con los parámetros de inicialización.
Ya hemos señalado que el SGA se sub-divide en varias estructuras de memoria que cada uno tiene misiones diferentes. Las principales áreas que figuran en el SGA que será inicialmente interesado en tener nombres complicados, pero en realidad son muy simples:

  • El buffer cache (db_cache_size)
  • The shared pool (SHARED_POOL_SIZE)
  • The redo log buffer (log_buffer).


Buffers de BD, Database Buffer Cache
    Es el caché que almacena los bloques de datos leidos de los segmentos de datos de la BD, tales como tablas, índices y clusters. Los bloques modificados se llamas bloques sucios. El tamaño de buffer caché se fija por el parámetroDB_BLOCK_BUFFERS del fichero init.ora.
    Como el tamaño del buffer suele ser pequeño para almacenar todos los bloques de datos leidos, su gestión se hace mediante el algoritmo LRU.
Buffer Redo Log
    Los registros Redo describen los cámbios realizados en la BD y son escritos en los ficheros redo log para que puedan ser utilizados en las operaciones de recuperación hacia adelante, roll-forward, durante las recuperaciones de la BD. Pero antes de ser escritos en los ficheros redo log son escritos en un caché de la SGA llamado redo log buffer. El servidor escribe periódicamente los registros redo log en los ficheros redo log. El tamaño del buffer redo log se fija por el parámetro LOG_BUFFER.
El db_cache_size y SHARED_POOL_SIZE parámetros definen la mayor parte de el tamaño de la región en memoria que Oracle consume en el arranque y determinar la cantidad de almacenamiento a disposición de los bloques de datos de la caché, SQL y procedimientos almacenados.

¿Cuáles son los roles de un DBA?



  • Conocer el negocio, la misión y objetivos para alinear sus responsabilidades en forma adecuada con estos.
  •  Instalar el software de base de datos
  •  Instalar parches o service pack para la base de datos
  •  Instalar software de clusterización para ambientes de alta disponibilidad 
  •  Configurar ambientes de clusters  
  •  Configurar Servidores NTP para sincronización de relojes de nodos de un cluster.
  •  Conocer de métodos de configuración de Alta Disponibilidad para redundancia a nivel de las NIC (bonding, failover) 
  •  Configurar ambientes de contingencia para recuperación ante desastres (DR). Probar failover y switchover  
  •  Crear Bases de Datos
  •  Crear y mantener usuarios
  •  Administrar la distribución compartida de recursos entre aplicaciones
  •  Estructurar y disponer del almacenamiento para la base de datos a nivel físico y nivel lógico. A nivel físico especificar características de las LUNs del storage, implementar con ASM (Oracle) grupos de discos para cobijar los archivos de la base de datos, diseñar mecanismos de failover en el caso de replicación de storage 
  •  Controlar los objetos lógicos que se crean y actualizan en la base datos (tablas, indices, etc), llevar controles de cambio.
  •  Definir y controlar el uso de estándares que faciliten la administración, velen por la seguridad, mantención y rendimiento de la BD
  •  Revisar y dar Visto Bueno para pasar a producción los nuevos diseños de base de datos que liberen los desarrolladores.
  •  Llevar Bitácora de actividades realizadas en cada base de datos.
  •  Documentar cada base de datos
  •  Evaluar nuevos releases de software de la base de datos, recomendar el uso de nuevas características para la comunidad de usuarios
  •  Proveer soporte técnico para los desarrolladores, apoyar en la resolución de problemas
  • Verificar y controlar el estado y uso de reglas de integridad de la BD
  •  Asistir con el análisis de impacto de cualquier cambio que pueda proyectarse a la base de datos
  •  Analizar rendimiento de la base de datos
  •  Realizar afinamiento (tuning) de las bases de datos
  •  Realizar afinamiento (tuning) de aplicaciones (análisis de planes de ejecución, optimizadores, SQL, PL/SQL, TSQL, etc), usando herramientas de tuning más sofisticadas y que requieren de más conocimientos (new)
  •  Realizar afinamiento (tuning) de red
  •  Actualizar en forma periódica las estadísticas de la BD para alimentar los modelos de optimización por COSTO.
  •  Realizar reorganizaciones de la base de datos, para mejorar rendimiento y facilitar administración
  •  Implementar diferentes políticas de seguridad de la base de datos (perfiles, roles, privilegios, encriptación selectiva, certificados, etc)
  •  Activar auditorias especificas de actividades en la base de datos de acuerdo a requerimientos.
  •  Administrar políticas de seguridad y auditoría de firewall de bases de datos (ejemplo www.guardium.com, GreenSQL).
  •  Implementar una política de respaldo y recuperación para la base de datos.
  •  Realizar respaldos lógicos y físicos
  •  Probar en forma periódica la política de respaldo y recuperación de la base de datos.
  •  Implementar archiving de la información que ya no es necesaria para el cumplimiento de objetivos del negocio.
  •  Levantar indicadores y métricas para conocer el comportamiento de la base de datos en el tiempo.
  •  Realizar Planificación de la Capacidad para el recambio de infraestructura (CPU, RAM, STORAGE, NETWORKING)
  •  Configurar servidores de aplicaciones para conectarse a la base de datos con máximo rendimiento y alta disponibilidad.