miércoles, 23 de noviembre de 2011

ESPACIO EN DISCO Y ADMINISTRACION DE MEMORIA EN ORACLE

1.-   Administrar la asignacion de espacio


El SGBDR de Oracle tiene estructuras lógicas y físicas que el administrador ha de gestionar. Las estructuras físicas son aquellas se pueden ver en el sistema operativo somo son los ficheros; mientras que las estructuras lógicas sólo se pueden ver desde el servidor de Oracle, como son por ejemplo los tablespaces.
Los usuarios más avanzados tendrán conocimiento de la estructura lógica de la base de datos, y es responsabilidad del DBA gestionar la correspondencia entre las estructuras lógicas y físicas para tener un rendimiento óptimo.
Desde la página de administración del Entreprise Manager se pueden gestionar con total comodidad las estructuras físicas y lógicas.
Archivos de Control: Contiene información de control y seguimiento imprescindible para el funcionamiento de la base de datos
Tablespaces: Es una estructura lógica que agrupa uno más ficheros de datos o ficheros temporales (tempfiles) y que permiten almacenar los objetos creados por los usuarios.
Grupos de Tablespaces temporales: Al asignar un “Grupo de tablespaces temporales” a un usuario, sus transacciones pueden utilizar cualquiera de los tablespaces temporales asignados al grupo, de forma que se puede optimizar su uso.
Archivos de Datos: Son los ficheros del sistema operativo en los cuales se van a almacenar los datos de la base de datos
Segmentos de Rollback: En versiones anteriores se utilizaban para deshacer las transacciones incompletas.
Grupo de Redo logs: Como mínimo toda base de datos tiene dos ficheros de redo logs, que tienen por misión registrar todas las modificaciones que se realizan sobre la base de datos




2.-  Describir los procesos de transporte




El servidor se vale de una serie de procesos que son el enlace entre las estructuras físicas y de memoria. A continuación se describen cada proceso y el papel que juega en la gestión de laBD.
System Monitor, SMON:  El SMON es el supervisor del sistema y se encarga de todas las recuperaciones que sean necesarias durante el arranque. Esto puede ser necesario si la BD se paró inesperadamente por fallo físico, lógico u otras causas.

Process Monitor, PMON: Este proceso restaura las transacciones no validadas de los procesos de usuario que abortan, liberando los bloqueos y los recursos de la SGA.

Database Writer, DBWREl proceso DBWR es el responsable de gestionar el contenido de los buffers de datos y del caché del diccionario. Él lee los bloques de los ficheros de datos y los almacena en la SGA. Luego escribe en los ficheros de datos los bloques cuyo contenido ha variado. La escritura de los bloques a disco es diferida buscando mejorar la eficiencia de la E/S.

Log Writer, LGWR:  El proceso LGWR es el encargado de escribir los registrosredo log en los ficheros redo log. Los registros redo logsiempre contienen el estado más reciente de la BD, ya que puede que el DBWR deba esperar para escribir los bloques modificados desde el buffer de datos a los ficheros de datos.Conviene tener en cuenta que el LGWR es el único proceso que escribe en los ficheros de redo log y el único que lee directamente los buffers de redo log durante el funcionamiento normal de la BD.

Checkpoint, CKPT:  Este proceso escribe en los ficheros de control loscheckpoints. Estos puntos de sincronización son referencias al estado coherente de todos los ficheros de la BD en un instante determinado, en un punto de sincronización.

Archiver, ARCH:  El proceso archivador tiene que ver con los ficheros redo log. Por defecto, estos ficheros se reutilizan de manera cíclica de modo que se van perdiendo los registros redo log que tienen una cierta antiguedad. Cuando la BD se ejecuta en modoARCHIVELOG, antes de reutilizar un fichero redo log realiza una copia del mismo.



Recoverer, RECO:  El proceso de recuperación está asociado al servidor distribuido. En un servidor distribuido los datos se encuentran repartidos en varias localizaciones físicas, y estas se han de mantener sincronizadas.












Lock, LCK:  El proceso de bloqueo está asociado al servidor en paralelo.







3.-  Recuperar el espacio de las tablas e indices utilizando la funcionalidad de segmentacion




Una opción para el manejo de la memoria es usar una forma de liberar al programador de la tarea del control de las tablas en expansión y contracción, de la misma forma que la memoria virtual elimina la preocupación por organizar el programa en una serie de proyectos.
Esto se puede lograr dotando a la máquina de varios espacios independientes de direcciones llamados segmentos. Cada segmento tiene una serie lineal de direcciones, desde 0 hasta cierto máximo. La longitud de cada segmento puede variar de 0 hasta un máximo permitido. Los distintos segmentos pueden tener y de hecho tienen por lo general, longitudes distintas. Además, la longitud de un segmento puede variar durante la ejecución. La longitud de un segmento de la pila puede crecer si algo entra a la pila y decrecer si algo sale de ella.



4.-  Entender la administracion de recursos de la base de datos




El objetivo principal del Administrador de recursos de base de datos es hacer que el servidor de bases de datos Oracle más control sobre las decisiones de gestión de recursos, eludiendo así los problemas derivados de una gestión ineficiente del sistema operativo.


El administrador de base de datos (DBA) es el técnico responsable de implementar las decisiones del administrador de datos. Por lo tanto, debe ser un profesional en IT. El trabajo del DBA consiste en crear la base de datos real e implementar los controles técnicos necesarios para hacer cumplir las diversas decisiones de las políticas hechas por el DA. El DBA también es responsable de asegurar que el sistema opere con el rendimiento adecuado y de proporcionar una variedad de otros servicios técnicos.




5.-  Crear y usar componentes de administracion de base de datos




  • Los procesos de usuario y de servidor son los procesos          principales implicados en la ejecución de una sentencia SQL.
  • Instancia Oracle es la combinación de los procesos en segundo plano y las estructuras de memoria.
  • Base de datos Oracle: Una base de datos Oracle está formada por archivos del sistema operativo que se utilizan para asegurar la consistencia de los datos, así como su recuperación en caso de que se produzca un fallo de la instancia.

miércoles, 24 de agosto de 2011

¿Qué es un SGA de Oracle?

SGA (System Global Area) sirve para facilitar la transferencia de información entre usuarios y también almacena la información estructural de la BD más frecuentemente requerida.
La SGA se divide en varias partes:

  • 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ámetro DB_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 logroll-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. para que puedan ser utilizados en las operaciones de recuperación hacia adelante, El tamaño del buffer redo log se fija por el parámetro LOG_BUFFER.
  • Área de SQL Compartido, Shared SQL Pool
    En esta zona se encuentran las sentencias SQL que han sido analizadas. El analisis sintáctico de las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas. Antes de analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en la zona de SQL compartido. Si es así, no la analiza y pasa directamente a ejecutar la que mantinene en memoria. De esta manera se premia la uniformidad en la programación de las aplicaciones. La igualdad se entiende que es lexicografica, espacios en blanco y variables incluidas. El contenido de la zona de SQL compartido es: 
    • Plan de ejecución de la sentencia SQL.
    • Texto de la sentencia.
    • Lista de objetos referenciados. 
    Los pasos de procesamiento de cada petición de análisis de una sentencia SQL son:
    • Comprobar si la sentencia se encuentra en el área compartida.
    • Comprobar si los objetos referenciados son los mismos.
    • Comprobar si el usuario tiene acceso a los objetos referenciados.
    Si no, la sentencia es nueva, se analiza y los datos de análisis se almacenan en la zona de SQL compartida. También se almacena en la zona de SQL compartido el caché del diccionario. La información sobre los objetos de la BD se encuentra almacenada en las tablas del diccionario. Cuando esta información se necesita, se leen las tablas del diccionario y su información se guarda en el caché del diccionario de la SGA. Este caché también se administra mediante el algoritmo LRU. El tamaño del caché está gestionado internamente por el servidor, pero es parte del shared pool, cuyo manaño viene determinado por el parámetro SHARED_POOL_SIZE.


¿Qué es un PGA de Oracle?

Las siglas provienen de 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... etc.

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:
a) area persistente: perdura durante toda la vida del cursor. Guarda las bind variables además de otras cosas.
b) area 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.

¿Dónde se almacena la PGA?
La PGA se almacena en la memoria del servidor pero fuera de la SGA. Por tanto, para dimensionar ambas áreas hay que tener en cuenta que la suma de las dos no supere los límites específicos del servidor y la plataforma (tamaño máximo memoria RAM, 2 GB en Windows sin /3GB, 3 GB en Windows con /3GB... etc.).

¿El tamaño de la PGA es configurable?
Sí, pero únicamente es configurable el tamaño de las áreas de trabajo. Desde Oracle9i el DBA puede fijar el tamaño máximo del cónjunto de todas las PGAs de la Instancia a través del parámetro PGA_AGGREGATE_TARGET. De esta forma, Oracle dinámicamente gestiona el tamaño de cada área de trabajo para que la suma de todas las PGAs (no de todas las áreas, que es un parte de la PGA como ya se ha indicado) no exceda del límite impuesto. En versiones anteriores la forma de controlar el tamaño de cada área de trabajo era a través de los parámetros SORT_AREA_SIZE, HASH_AREA_SIZE, BITMAP_MERGE_AREA_SIZE y CREATE_BITMAP_AREA_SIZE.

Para que la Instancia tenga el cuenta el parámetro PGA_AGGREGATE_TARGET, el parámetro WORKAREA_SIZE_POLICY se debe asignar a AUTO (por omisión). Con MANUAL, se indica que se trabaja de la forma anterior y se fija cada parámetro *_AREA_SIZE por separado.

¿Cuándo se crea la PGA?
La crea el Listener durante la creación del proceso servidor. Si esta memoria no puede ser asignada o reservada la creación del proceso servidor falla y el Listener devuelve un ORA-12500: TNS:listener failed to start a dedicated server process. Igualmente, si durante la ejecución de alguna sentencia es necesario incrementar el tamaño de la PGA y el sistema operativo no tiene más memoria para darle se devuelve un error indicándolo.

¿Cuándo se destruye la PGA?
Al cerrar el proceso servidor su PGA asociada se libera y se devuelve al sistema operativo el espacio reservado. El proceso servidor se cierra cuando el usuario ejecuta EXIT o DISCONNECT, lanza un Ctrl+C, se pierde la comunicación con el servidor, se produce un ORA-600 que desconecta la sesión, el DBA lanza un KILL SESSION, etc.

¿Cuánto ocupa cada PGA?
En cada versión de Oracle, e incluso en cada release, el tamaño mínimo cambia. No obstante, como el tamaño es cambiante en función del área de trabajo, lo mejor que se puede hacer para comprobar cuánto ocupa o cómo ocupa es monitorizarlas.

Roles de una DBA

El DBA o Adminitrador de la BD de una empresa es siempre considerado como la persona con más experiencia en el área de bases de datos. Por lo anterior, es conveniente tener muy claras las expectativas que se generan en torno a su trabajo y cuáles son los principales roles que debe asumir dentro del marco corporativo o de un proyecto. 

La tarea del DBA es crear la base de datos en sí y poner en vigor los controles técnicos necesarios para apoyar las políticas dictadas por el administrador de datos. El DBA se encarga también de garantizar el funcionamiento adecuado del sistema y de proporcionar otros servicios de índole técnica relacionados. El DBA cuenta por lo regular con un grupo de programadores  de sistemas y otros asistentes técnicos. 

  • Garantizar la seguridad del sistema
  • El DBA debe siempre monitorear y administrar la seguridad del sistema. Esto involucra la incorporación y eliminación de usuarios, administración de espacios de disco (cuotas), auditorias y una revisión periódica para detectar probables problemas de seguridad.
  • Prevención de riesgos
  • Otra tarea del DBA es la de calendarizar mantenciones a las bases de datos (archivos lógicos) o cooperar en el mantenimiento de las máquinas al administrador del sistema. El DBA debe fortalecer sus esfuerzos en orden a eliminar problemas o situaciones potencialmente peligrosas.
  • Instalación de nuevos componentes del software:
Una de las tareas principales del DBA consiste en la instalación periódica de nuevas actualizaciones de software de Oracle, tanto en lo referente a programas de aplicaciones como a herramientas administrativas. También es recomendable que el propio DBA y otros usuarios de Oracle prueben la instalación y nuevas configuraciones antes de migrarlas a los ambientes de producción.
  • Interacción con el administrador del sistema
En la mayoría de los casos los programas sólo pueden ser instalados o accedidos por el administrador del sistema. En este caso, el DBA debe trabajar siempre muy bien coordinado con él para garantizar que tanto la instalación y configuración de software como de hardware permita un adecuado funcionamiento del motor de base de datos y de las aplicaciones.
  • Monitorización:
El DBA debe monitorear continuamente el rendimiento del sistema y estar preparado para efectuar ajustes de sintonización de éste. En ciertas oportunidades esto involucra cambiar sólo algunos parámetros y otras veces reconstruir índices o reestructurar tablas.
  • Respaldos 
Debido a que la tarea más importante del DBA es proteger la integridad de los datos, se deberá desarrollar una estrategia efectiva de respaldos y recuperación de datos para mantener la estabilidad de toda la información guardada. Las frecuencias de estos respaldos deberán decidirse dependiendo de la cantidad de procesos que alteran los datos a través del tiempo.

Tareas adicionales:
Otras tareas de importancia que corresponden con frecuencia realizar a un DBA son:
  • Apoyar en el diseño y optimización de modelos de datos.
  • Analizar datos y efectuar recomendaciones concernientes a mejorar el rendimiento y la eficiencia en el manejo de aquellos datos que se encuentran almacenados.
  • Asistir a los desarrolladores con sus conocimientos de SQL y de construcción de procedimientos almacenados y triggers, entre otros.
  • Documentar y mantener un registro periódico de las mantenciones, actualizaciones de hardware y software, cambios en las aplicaciones y, en general, todos aquellos eventos relacionados con cambios en el entorno de utilización de una base de datos.
  • Apoyar en la definición de estándares de diseño y nomenclatura de objetos.

La Responsabilidad general del DBA es facilitar el desarrollo y el uso de la Base de Datos dentro de las guías de acción definidas por la administración de los datos.
El DBA es responsable primordialmente de:
 
  • Administrar la estructura de la Base de Datos
  • Administrar la actividad de los datos
  • Administrar el Sistema Manejador de Base de Datos
  • Establecer el Diccionario de Datos
  • Asegurar la confiabilidad de la Base de Datos
  • Confirmar la seguridad de la Base de Datos