lunes, 20 de agosto de 2012


Administración de Base de Datos

El administrador de la base de datos de una empresa es siempre considerado como la persona con más experiencia en el área de bases de datos. Por lo anterior, es convenientetener 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.    



Roles

Instalación de nuevos componentes del software

ü Creación de base de datos y tablas.
ü  Especificación de las restricciones de integridad de los datos.
ü  Administrar la concurrencia.
ü  Optimización del acceso a datos.
ü  Definir el esquema conceptual.
ü  Definir el esquema interno.
ü  Vincularse con los usuarios.
ü  Procedimientos de respaldo y recuperación.
ü  Supervisar el desempeño y responder a cambios en los requerimientos.
ü  Concesión de autorización para el acceso a los datos.
ü  Definición de esquema.
ü  Definición de la estructura de almacenamiento del método de acceso.


PGA 
(Program Global Area)



Es una región de memoria que contiene datos y la información de control para un proceso del servidor.
Es una memoria no compartida creada por Oracle cuando se comienza un proceso del servidor. El acceso a el es exclusivo a ese proceso del servidor y es leído y escrito solamente por el código de Oracle que actúa a nombre de él.
Esta área de memoria contiene datos e información de control para los procesos que se ejecutan en el servidor de Oracle (relacionados con la base de datos, por supuesto).
El tamaño y contenido de la PGA depende de las opciones del servidor que se hayan instalado.

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.






SGA
(Area Global de Sistemas)

Facilita la transferencia de información entre usuarios. Además, almacena la mayor parte de la información sobre la propia estructura de la base de datos que es parte de la información consultada con mas frecuencia. Basta con establecer un tamaño máximo para la consultada con mas frecuencia. SGA y Oracle se encarga de asignar memoria a los diferentes componentes según los requerimientos parámetros del archivo init.ora. Se gestiona con la variable SGA_MAX_SIZE.Se crea cuando la instancia es levantada y se borra cuando ésta se deja de usar (cuando se hace shutdown).


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 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.

Á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.






Procesos Background


Procesos Background en 
Oracle

Background se utiliza para nombrar a todos aquellos procesos o rutinas de ejecución que se realizan en segundo plano. Esto implica que el proceso se está llevando a cabo con una prioridad baja y no siempre tiene la CPU (Unidad central de procesamiento) de forma secuencial ejecutando su código.

Es muy útil iniciar los procesos en background ya que de esta manera se puede tener activo el editor de texto y el terminal al mismo tiempo.
Para iniciar el editor en background tipee el nombre del editor. 

Ejemplo: Iniciar el editor de texto emacs con el nombre de un archivo.

·  LMONGlobal Enqueue Service Monitor
·  LMD 0. Global Enqueue Service Daemon
·  LMS xGlobal Cache Service (x puede ir de 0 a n)
·  LCK. proceso de lockeo
·  DIAGproceso de diagnóstico




DBWR: Este proceso es el que se encarga de escribir a disco. Es el único con permiso de escritura en disco, o sea en la base de datos. Cuando nosotros escribimos, hacemos un commit en la base de datos, realmente no está escribiendo en disco, si no que está marcando una serie de bloques de datos como que son susceptibles de ser escritos en disco, es decir, marca los datos como "confirmados", pero no escribe, si no que espera a que otra transaccion los requiera para llevarlos a disco y así ahorrar un "viaje" o una operación. Por eso mismo cuando la base de datos cae..o la paramos con la opcion "abort", queda inconsistente, ya que puede tener datos en bufferes "confirmados" que realmente no están escritos en disco. Por eso cuando volvemos a arrancar, necesita realizar una recuperación.

LGWR: Este proceso es que se encarga de escribir el contenido del búfer del registro de rehacer en los ficheros de registro de rehacer en linea. Se realizan las escrituras por lotes. El buffer del registro de rehacer(redo log), contiene siempre el estado más reciente de la base de datos, ya que es posible que el proceso DBWR espere antes de escribir los bloques modificados desde los búferes de bloques de datos a los archivos de datos. Los archivos de registro de rehacer son ficheros secuenciales lo que indica que cuando acaba de escribir en uno, empieza por otro y así sucesivamente.

CKPT: Este proceso es el encargado de realizar un "punto de comprobacion". Cuando se sucede un punto de comprobacion, CKPT hace que DBWR escriba todos los bloques que se hayan modificado desde el último punto de comprobación, y actualize los archivos de control y las cabeceras de los archivos de datos para registrar el punto de comprobación. Los puntos de comprobacion de producen de forma automática cuando se llena un archivo de registro de rehacer en linea.
Se puede configurar el checkpoint en el fichero de inicializacion de parametros con el parametro: LOG_CHEKPOINT_INTERVAL.

SMON: Este proceso realiza la recuperación de la instancia, segun sea preciso usando los registros de rehacer en línea... (antes hablamos de que si oracle se para necesitaría hacer una recuperacion si se para anormalmente, pues lo realiza así). Limpia la base de datos de transacciones inservibles. Tambien cumple la función de agrupar extensiones libres contiguas en la base de datos. Smon solo agrupa el espacio libre en espacios de tablas cuyo valor de almacenamiento predeterminado sea distinto de 0.

PMON: Realiza limpiezas de procesos fallidos de usuarios. Libera recursos que estuviera usando el usuario. Sirve por ejemplo cuando hay bloqueos. libera bloqueos y pone a disposición para otros usuarios.
ARCH: Proceso que escribe en los registros de rehacer en linea de forma ciclica, es decir, despues de llenar el primero, va al segundo, cuando lo llena, va al tercero y asi sucesivamente. Una vez terminado el último fichero de rehace en linea, LGWR empieza a sobreescribir los contenidos del primero. Cuando la base de datos se ejecuta en modo ARCHIVELOG, ARCH realiza una copia del cada uno de ficheros de rechace en linea antes de ser sobreescrito.

RECO: Este proceso es el encargado de realizar las recuperaciones de fallos en las bases de datos distribuidas. Este proceso trata de acceder a las bases de datos implicadas en transacciones distribuidas dudas e intenta resolver las transacciones.