Monitoreo general de un DBMS
La
elección de un buen manejador de base de datos es de vital importancia ya que
puede llegar a ser una inversión tanto en hardware como en software muy
cuantioso, pero no solo eso, además va a determinar el centro de información de
la empresa.
Los sistemas orientados a los datos se
caracterizan porque los datos no son de una aplicación sino de una Organización
entera que los va a utilizar; se integran las aplicaciones, se diferencian las
estructuras lógicas y físicas. El concepto de relación cobra importancia.
Originalmente las aplicaciones cubrían necesidades muy específicas de
procesamiento, se centraban en una tarea específica.
Uno de los principales indicadores
que se tiene que tomar en cuenta como DBA es el espacio disponible en disco. No
es problema cuando se tiene un server o 2 para monitorear, sin embargo, cuando
hay una cantidad considerable automatizar un proceso que lo haga es lo mejor.
Dentro de SQL Server (7,2000,2005) hay un procedimiento no documentado que nos
puede ayudar a cumplir este cometido.
El procedimiento es XP_FIXEDDRIVES,
no lleva parámetros ni nada y nos regresan todos los discos a los que tiene
acceso SQL Server y su espacio disponible en Megabytes.
Si esta en cluster mostrara todos
los discos aunque los discos no estén en el mismo grupo que la instancia, lo
que puede llegar a confundir.
Dejo a consideración de cada quien
como utilizarlo, ya sea mandando un mail con el resultado u opciones más
complejas como el revisar un porcentaje y en base a eso tomar una acción.
Las revisiones deben realizarse sobre el
archivo de alerta de ORACLE (alert.log) y sobre los archivos de rastreo de
procesos de background y de usuarios para identificar errores que se presenten
a nivel de base de datos o de sistema operativo.
Los archivos de alerta útiles para el
diagnóstico de información que contiene ORACLE y que se utilizan para la
detección de errores en la base de datos son:
El Alert Log registra errores en forma
cronológica, provenientes de la operación diaria de la Base de Datos. La
ubicación actual del archivo es la ubicación por defecto establecida por ORACLE
y se verifica mediante el parámetro BACKGROUND_DUMP_DEST del archivo init.ora:
BACKGROUND_DUMP_DEST =
E:\U01\ORACLE\UCBL\ADMIN\bdump.
La revisión de este archivo en forma
periódica permite detectar errores internos (ORA-600) y errores de corrupción
de bloques (ORA-1578). Adicionalmente, permite monitorear las operaciones de la
base de datos (CREATE DATABASE, STARTUP, SHITDOWN, ARCHIVE LOG y RECOVER) y ver
los parámetros que no se muestran por defecto en la inicialización.
Los archivos de rastreo de procesos de
Background se generan cuando un proceso de background (SMON, PMON, DBWn, etc.)
emite un error. Estos archivos se almacenan en BACKGROUND_DUMP_DEST =
E:\U01\ORACLE\UCBL\ADMIN\bdump.
Los archivos de rastreo de usuarios (user
trace files) se crean a través de procesos de servidor cuando se generan
errores o cuando se solicita el rastreo por el usuario o a nivel de parámetros
de la base de datos.
Su ubicación actual definida por el
parámetro USER_DUMP_DEST y actualmente es:
E:\U01\ORACLE\UCBL\ADMIN\udump.
Las normas de revisión de los archivos
mencionados se definen en el documento Procedimientos de Administración de Base
de Datos.
El principal riesgo que se menciona en
las observaciones es la posibilidad que se realicen operaciones no autorizadas
y que éstas no sean identificadas en la base de datos; sin embargo los archivos
de log´s de usuarios no permiten identificar con facilidad estas operaciones y
en todo caso requieren de una gran cantidad de tiempo de revisión y espacio de
almacenamiento. Por este motivo, se utilizan tablas de auditoria para todos los
sistemas y para aquellas tablas relevantes de cada uno, las tablas de auditoria
tienen las siguientes características:
•
Almacenan
datos obligatorios (transacción, fecha y usuario) y datos relacionados con la
tabla a la que hacen el monitoreo.
•
Los
registros a las tablas de auditoria se activan mediante un disparador cada vez
que se realizan cambios en la tabla base.
•
Se
consultan estas tablas cuando se quiere identificar una transacción, un usuario
o una fecha de transacción.
El contenido de estas tablas permite
mantener un registro constante sobre las operaciones que se realizan en la base
de datos y las mismas pueden ser consultadas en cualquier momento.
PGA DE
ORACLE (ÁREA
GLOBAL DE PROGRAMA)
Un PGA es una región de memoria que
contiene datos e información de control para un proceso de servidor. Es la
memoria no compartida creada por la base de datos Oracle cuando un proceso de
servidor se ha iniciado. El acceso a la PGA es exclusivo para el proceso del
servidor. Hay un PGA para cada proceso de servidor. Procesos en segundo plano
también se asignan sus propios PGA. La memoria total utilizada por todos los
PGAs individuales se conoce como el ejemplo total de memoria PGA, y la recogida
de PGAs individuales se refiere como el ejemplo total de la PGA, o simplemente
instancia de la PGA. Puede utilizar los parámetros de inicialización de base de
datos para definir el tamaño de la instancia de la PGA, no PGA individuales.
El PGA puede ser crítico para el
rendimiento, especialmente si la aplicación está haciendo un gran número de
clases. Operaciones de ordenación se produce si utiliza ORDER BY y GROUP BY
comandos en las sentencias SQL.
SGA DE ORACLE (SISTEMA DE HYPERLINK "http://abdfuv.blogspot.mx/2012/08/sga-de-oracle-sistema-de-area-global.html"ÁHYPERLINK
"http://abdfuv.blogspot.mx/2012/08/sga-de-oracle-sistema-de-area-global.html"REA
GLOBAL)
Es un conjunto de áreas de memoria
compartida que se dedican a un Oráculo "instancia" (un ejemplo es los
programas de bases de datos y la memoria RAM).
Sirve para facilitar la transferencia de
información entre usuarios y también almacena la información estructural de la BD
más frecuentemente requerido.
En los sistemas de bases de datos
desarrollados por la Corporación Oracle, el área global del sistema (SGA) forma
parte de la memoria RAM compartida por todos los procesos que pertenecen a una
sola base de datos Oracle ejemplo. El SGA contiene
toda la información necesaria para la operación de la instancia.
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.
o Plan de ejecución de la sentencia SQL.
o Texto de la sentencia.
o Lista de objetos referenciados.
o Comprobar si la sentencia se encuentra en
el área compartida.
o Comprobar si los objetos referenciados
son los mismos.
o Comprobar si el usuario tiene acceso a
los objetos referenciados.
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. El contenido de la zona de SQL
compartido es:
o Los pasos de procesamiento de cada
petición de análisis de una sentencia SQL son:
o 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.
Mediante
la auditoría de bases de datos se evaluará:
•
Definición
de estructuras físicas y lógicas de las bases de datos.
•
Control
de carga y mantenimiento de las bases de datos.
•
Integridad
de los datos y protección de accesos.
•
Estándares
para análisis y programación en el uso de bases de datos.
•
Procedimientos
de respaldo y de recuperación de datos.
Aspectos Claves
•
No
se debe comprometer el desempeño de las bases de datos
•
Soportar
diferentes esquemas de auditoría.
•
Se
debe tomar en cuenta el tamaño de las bases de datos a auditar y los posibles
SLA establecidos.
Segregación de funciones
El
sistema de auditoría de base de datos no puede ser administrado por los DBA del
área de IT.
Proveer valor a la operación del negocio
•
Información
para auditoría y seguridad.
•
Información
para apoyar la toma de decisiones de la organización.
•
Información
para mejorar el desempeño de la organización.