Monitoreo en BD
Monitoreo en BD
Monitoreo en BD
Debe
tomarse en cuenta que las bases de datos tienen una relacin profunda con el rendimiento
general de aplicaciones y servidores, por lo que la recoleccin y anlisis de datos estadsticos
del funcionamiento de las bases de datos y su relacin con los recursos disponibles (CPU,
memoria, etc.) deben ser claros y fciles a los ojos del administrador del entorno.
Desafortunadamente, es muy comn que estos datos sean muy difciles de manejar con las
herramientas estndar de las bases de datos. Es decir, sera complicado configurar todas las
herramientas disponibles para monitorear una base de datos de tal manera que se pueda ver
fcilmente el uso de recursos por parte de la misma, aislando las dems funciones de un
servidor. Otro problema puede presentarse al utilizar mquinas virtuales (lo cual es cada vez ms
comn hoy en da), y monitorear stas mquinas con sus matices especficos.
Para solucionar estos problemas y otros, el mercado ofrece una cantidad considerable de
herramientas, cada una con sus caractersticas particulares. En esta ocasin revisar una
aplicacin que se destaca por su flexibilidad, facilidad de uso y un enfoque en mquinas
virtuales novedoso. Estoy hablando de IgniteFree.
Los siguientes lineamientos proveen un punto de partida as como tambin recomendaciones tiles para las
tareas de monitoreo, diagnstico y afinamiento de base de datos.
Sin embargo, estos lineamientos no abarcan extensivamente todas las tareas que un DBA debe realizar para
un mantenimiento de la base de datos (la informacin siguiente es enunciativa y no exhaustiva o taxativa).
No se recomienda que los software Antivirus realicen un escaneo sobre los archivos fsicos de la base de datos.
Lo anterior puede conllevar a bloqueos y demoras de la aplicacin al intentar persistir la informacin a la base
de datos.
Lineamientos de afinamiento
Las tareas de afinamiento se deben realizar en horarios no laborales, y considere que
tambin pueden tomar un tiempo significativo.
Dentro de esta tarea, asegrese de recrear indices los cuales estn altamente
fragmentados, o reordenar su definicin de acuerdo al orden las columnas
consultadas (especialmente cuando hablamos de ndices compuestos).
Determinar cmo deberan ser distribuidos los fondos en todas las actividades
programticas.
Evaluacin de resultados
La evaluacin de resultados mide tanto los resultados a corto plazo como lo resultados a a
largo plazo de los programas.
Por ejemplo, en un programa para fortalecer la respuesta del sector salud en casos de
violencia contra las mujeres, un resultado de corto plazo puede ser el uso de protocolos y
procedimientos estandarizados por parte de los profesionales en un centro de salud.
Un resultado a largo plazo puede ser la integracin de esas polticas en todo el sector
y el sistema de salud.
Establecer vnculos causales, o relaciones, entre las actividades que se llevan a cabo
y los resultados deseados.
Identificar y aislar todo factor externo que pueda influir en el resultado deseado.
Por ejemplo, una evaluacin del impacto de una iniciativa dirigida a la prevencin de
agresiones sexuales a mujeres y nias en el pueblo x mediante mejoras de infraestructura
(iluminacin, pasajes ms visibles, etc.) tambin puede comparar datos de otra comunidad
(pueblo y) para evaluar si las reducciones en el nmero de agresiones al finalizar el programa
pueden atribuirse a esas mejoras. El propsito es aislar otros factores que puedan haber
influido en la reduccin del nmero de agresiones, tales como la capacitacin de la polica o
nueva legislacin.
Mientras el impacto de las evaluaciones puede considerarse el estndar dorado para el
monitoreo y la evaluacin, su medicin puede representar un desafo y puede no ser viable
por muchas razones, entre ellas:
Para hacerlo adecuadamente, tambin necesitan que la recoleccin de datos siga una
metodologa estadstica especfica, a lo largo de un perodo de tiempo, desde una variedad de
grupos de control y de intervencin, que puede ser difcil para algunos grupos.
Puede que las evaluaciones de impacto no sean siempre necesarias o, incluso apropiadas,
para las necesidades de la mayora de los programas e intervenciones que buscan monitorear
y evaluar sus actividades.
Para medir el impacto del programa, generalmente se hace una evaluacin al principio
(llamada lnea de base o evaluacin ex-ante) y luego otra vez al final (llamada evaluacin expost) de un programa. Tambin se recaban mediciones de un grupo de control con
caractersticas similares a las de la poblacin meta, pero no se trata de recibir la intervencin
para poder comparar a ambas.
en el grupo de intervencin.
Datos de base o conocimiento de las disposiciones de la ley antes de la
Los problemas con los cuales nos encontramos al trabajar con bases de datos grandes son distintos a
los problemas que tienen las bases de datos pequeas.
Como las empresas constantemente estn almacenando ms y ms datos las tablas van creciendo de
tamao diariamente, quizs minuto a minuto. Llega un momento en que la Base de Datos ya puede
considerarse grande.
Cundo una Base de Datos es grande?
Como muchas otras cosas en Informtica, sta tambin depende del punto de vista. Para alguien podra
ser grande y para otros pequea, aunque en general se considera grande a las bases de datos que
alcanzan o superan un tamao de 10 Gigabytes. En este blog se considera que:
Consultas lentas
Realizar un ciclo backup/restore puede ser una gran prdida de tiempo, porque la restauracin
puede demorarse un da o ms, y no asegura que se haya solucionado el problema
Tareas administrativas diarias en las bases de datos grandes
Si ocurre un problema, puede demorarse mucho la solucin as que lo ms inteligente es evitar que
ocurra. Para ello:
1.
2.
3.
4.
5.
6.
Aunque realizar un ciclo backup/restore no nos asegura que solucionaremos todos los problemas, tener
una Base de Datos grande sin backups actualizados es un suicidio. En las transacciones lo ms
importante es que ninguna demore mucho en completarse (mucho es relativo, pero en general si tarda
ms de un minuto entonces est tardando una eternidad). Las instrucciones SQL no optimizadas hacen
perder tiempo, algo que no se puede permitir en estas circunstancias. Y no debemos olvidar que una
instruccin SQL que hoy est optimizada y funciona perfectamente podra dejar de estarlo dentro de
unos meses cuando la Base de Datos haya aumentado mucho de tamao. Por eso la verificacin debe
hacerse diariamente.
El archivo FIREBIRD.LOG es el mejor lugar para verificar que todo est correcto, si hay algn problema
casi siempre aparecer en ese archivo.
Cmo realizar el ciclo backup/restore?
Es bastante frecuente, aunque errneo, hacerlo de esta manera:
Base de Datos > Backup con el mismo nombre anterior
Por ejemplo, la Base de Datos se llama CONTA.FDB y el archivo de backup siempre se
llama CONTA.FBK, cul es el problema potencial? Que si la Base de Datos est corrupta entonces el
nuevo backup no servir y el anterior no podr ser utilizado porque fue sobre-escrito.
Lo correcto, por lo tanto, es hacer el backup de esta manera:
Base de Datos > Backup con un nombre distinto al anterior
Esto evidentemente implica que tendremos varios archivos de backup, pero es preferible que sobren y
no que falten.
El archivo delta
Cuando se ejecuta el programa GBAK para realizar un backup, ste hace el backup de todo el contenido
que tiene en ese momento la Base de Datos. Es como si le tomara una fotografa. Nada que se realice
con posterioridad se guardar en el backup ni en la Base de Datos, slo lo que exista en el momento de
iniciarse GBAK. Pero y qu pasa con los datos que los usuarios continan insertando, actualizando o
borrando? Que no se guardan en la Base de Datos original sino en un archivo temporario llamado delta.
Cuando GBAK finaliza, entonces todo el contenido del archivo delta se copia dentro de la Base de
Datos.
Cuando hacemos backup de bases de datos pequeas no vale la pena preocuparse por ese
archivo delta pero cuando es una Base de Datos grande s, porque no podemos permitirnos que est
corrupto. Un motivo podra ser que no haya suficiente espacio en el disco duro para el archivo delta.
La restauracin
Aqu, es obligatorio que al finalizar un backup se realice un restore (en otro disco duro y preferiblemente
en otra computadora) para asegurarnos de que se encuentre en perfectas condiciones y pueda ser
utilizado en caso de necesidad.
Nada hay peor que creer que se tiene un backup actualizado pero eso no es cierto porque el backup se
encuentra inservible. No ocurre frecuentemente, pero a veces ocurre, y no se puede tomar ese riesgo.
Los ndices
Los ndices en Firebird se utilizan en las bsquedas y en los filtros (clusula WHERE) y cuando
deseamos que los resultados aparezcan en un cierto orden (clusula ORDER BY)
Para saber si un ndice es el adecuado, es necesario, y se encuentra en buena salud, debemos verificar
sus estadsticas. En Firebird los ndices pueden degradarse y no debemos permitir que tal cosa ocurra.
Acciones a tomar si se descubre un problema
Estas son recomendaciones que a veces podran no aplicarse, dependen de cada caso, pero servirn
de gua:
1.
2.
Una consulta est demorando mucho. Verificar cual es la consulta, mirar su PLAN y si es
necesario crear un nuevo ndice
Programas que se pueden utilizar cuando se trabaja con grandes bases de datos
Aunque detectar los problemas y solucionarlos podra hacerse manualmente, eso requerir que la
persona encargada conozca mucho del tema y que tenga suficiente tiempo y ganas para dedicarle a esa
tarea. Para estos casos se justifica adquirir software que ayude en la deteccin y correccin. Los
recomendados son:
correcta, obtiene estadsticas, y si descubre algn problema entonces enva un e-mail describindolo
FBScanner. Verifica cada instruccin SQL que el Cliente le enva al Servidor, puede realizar un
anlisis detallado de cada consulta, PLAN, transaccin y conexin, de esta manera sirve para detectar
los cuellos de botella, las transacciones que se demoran mucho, los usuarios que se desconectan de
2.
3.
podemos enviarlos a un archivo de texto y de esa manera ser muy fcil posteriormente revisar ese
archivo de texto y conocer exactamente lo que ocurri en la Base de Datos
Enconces, empezaremos creando con el bloc de notas del Windows un archivo de texto donde
guardaremos la configuracin a utilizar:
192.168.0.1/3051:
Abrimos ahora otra ventana Smbolo del sistema y ejecutamos en ella el programaISQL.EXE y nos
conectamos a una Base de Datos para ver lo que sucede con nuestro monitoreo:
SYSDBA nos indica quien fue el usuario que se conect a la Base de Datos. El :NONE despus de
su nombre nos indica que no us un rol para conectarse. Si un usuario utiliza un rol, el nombre de ese
rol aparecer aqu.
XNET:WALTER-PC nos indica la forma de conexin (a travs de XNET en este caso, tambin podra
haber sido a travs de una direccin IP) y el nombre de la computadora (o la direccin IP si aplica).
C:\Archivos de programa\ es el nombre del programa que se us para conectarse a la Base de
Datos. En este caso el nombre de ese programa fue ISQL.EXE pero lo normal es que se trate del
nombre de tu aplicacin (Contabilidad, Facturacin, Ventas, Sueldos, etc.)
TRA_90742 es el nmero de la transaccin. En este caso fue la transaccin nmero 90.742.
CONCURRENCY | WAIT | READ_WRITE indican los parmetros de la transaccin. En este caso la
transaccin fue SNAPSHOT, WAIT, READ WRITE, en otros casos podra ser: READ COMMITTED, NO
WAIT, READ ONLY, REC_VERSION, NO_REC_VERSION, etc.
START_TRANSACTION nos indica que se inici una transaccin.
EXECUTE_TRIGGER_FINISH nos indica que finaliz la ejecucin de un trigger cuyos datos vemos un
poco ms abajo.
Y bueno, puede mostrarte ms informacin relacionada pero ya la puedes descubrir por t mismo, para
eso eres lo suficientemente inteligente como para entender lo que ocurre.
Si quieres que el programa FBTRACEMGR.EXE no enve la informacin a la pantalla sino que la enve
a un archivo de texto le puedes redireccionar la salida con el smbolo mayor que, como se muestra a
continuacin:
sensores y que permite visualizar algo en una pantalla. El monitor, por lo tanto, ayuda a controlar o
supervisar una situacin.
Esto nos permite inferir que monitoreo es la accin y efecto de monitorear, el verbo que se utiliza para
nombrar a la supervisin o el control a travs de un monitor. Por extensin, el monitoreo es cualquier
accin de este tipo, ms all de la utilizacin de un monitor.
5.3.1.1 Monitoreo general de un DBMS
DAP un trmino que Gartner desarroll para remplazar el anterior concepto de DAM se refiere a las
suites de herramientas que se utilizan para apoyar la identificacin y reportar comportamiento
inapropiado, ilegal o de otra forma indeseable en las RDBMSs, con mnimo impacto en las operaciones
y la productividad del usuario. Estas suites han evolucionado de herramientas DAM que ofrecan
anlisis de la actividad del usuario en las RDBMSs y alrededor de ellas para abarcar un conjunto ms
integral de capacidades, que incluyen:
Descubrimiento y clasificacin.
Gestin de vulnerabilidades.
Anlisis al nivel de aplicacin.
Prevencin de intrusin.
Soporte de seguridad de datos no estructurados.
Integracin de gestin de identidad y acceso.
Soporte de gestin de riesgos.
quot
du
El comando
du
da un resumen del uso de disco en una rama de directorios.
du -s /export/home/*
Muestra el total para cada rama de subdirectorio bajo /export/home;
Esto no es efectivo para ver el consumo total de cada usuario si los usuarios tienen archivos en otras
partes del sistema.
df
El comando
df
da un resumen del uso del espacio a nivel de todo el sistema:
df
Muestra el espacio utilizado en cada sistema de archivos, incluso a veces en los que estn montados
va NFS. Si se indica uno en particular, da el espacio utilizado en ese sistema de archivos: df /dev/hda2.
El comando
quot
informa sobre el espacio en disco consumido por los usuarios en cada sistema de archivos: quot -f
/dev/hda2
Proporciona una lista de la cantidad de bloques y archivos a nombre de cada usuario.
Monitoreo de Logs
La otra utilizando los contadores de SQL Server desde el sistema operativo.
Monitoreo de Log transacciones
Una de las tareas de un DBA es monitorear el espacio de la base de datos, debido a que esto consume
mucho tiempo cuando se tienen varias DBs es bueno automatizar tareas repetitivas y tediosas. Una
manera de realizar la automatizacin del monitoreo de DBs en UNIX es por medio del crontab, el
siguiente es un ejemplo de como usar el crontab para monitorear los tablespaces.
Los siguientes scripts permiten obtener el espacio utilizado y libre de los tablespaces, uno lo
obtiene en base el porcentaje libre de espacio y el otro obtiene el espacio en base a los MB libres. Estos
scripts reciben dos parametros: &1 .- es el directorio y archivo donde se va a crear el reporte(spool) y &2
que es el limite ya sea porcentaje (99) o Mb(99999).
tablespace_size_pct.sql
SET line 132
SET pages 50
SET pause OFF
SET feedback OFF
SET echo OFF
SET verify OFF
COLUMN c1 heading "Tablespace|Name"
COLUMN c2 heading "File|Count"
COLUMN c3 heading "Allocated|in MB"
COLUMN c4 heading "Used|in MB"
COLUMN c5 heading "%|free" format 99.99
COLUMN c6 heading "Free|in MB"
COLUMN c7 heading "%|used" format 99.99
spool &1;
SELECT c1,ROUND(c3,2) c3,ROUND(c4,2) c4,ROUND(c6,2) c6,ROUND(c7,2) c7,ROUND(c5,2) c5,c2
FROM(
SELECT NVL (b.tablespace_name, NVL (a.tablespace_name, 'UNKOWN')) c1,
mbytes_alloc c3, mbytes_alloc - NVL (mbytes_free, 0) c4,
NVL (mbytes_free, 0) c6,
((mbytes_alloc - NVL (mbytes_free, 0)) / mbytes_alloc) * 100 c7,
100
- (((mbytes_alloc - NVL (mbytes_free, 0)) / mbytes_alloc) * 100) c5,
b.files c2
FROM (SELECT SUM (BYTES) / 1024 / 1024 mbytes_free, tablespace_name
FROM SYS.dba_free_space
GROUP BY tablespace_name) a,
(SELECT SUM (BYTES) / 1024 / 1024 mbytes_alloc, tablespace_name,
COUNT (file_name) files
FROM SYS.dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name(+) = b.tablespace_name
UNION ALL
SELECT f.tablespace_name,
SUM (ROUND ((f.bytes_free + f.bytes_used) / 1024 / 1024, 2)
) "total MB",
SUM (ROUND (NVL (p.bytes_used, 0) / 1024 / 1024, 2)) "Used MB",
SUM (ROUND ( ((f.bytes_free + f.bytes_used) - NVL (p.bytes_used, 0)
)
/ 1024
/ 1024,
2
)
) "Free MB",
(SUM (ROUND (NVL (p.bytes_used, 0) / 1024 / 1024, 2)) * 100)
/ (SUM (ROUND ((f.bytes_free + f.bytes_used) / 1024 / 1024, 2))),
100
- (SUM (ROUND (NVL (p.bytes_used, 0) / 1024 / 1024, 2)) * 100)
/ (SUM (ROUND ((f.bytes_free + f.bytes_used) / 1024 / 1024, 2))),
COUNT (d.file_name)
FROM SYS.v_$temp_space_header f,
dba_temp_files d,
SYS.v_$temp_extent_pool p
WHERE f.tablespace_name(+) = d.tablespace_name AND f.file_id(+) = d.file_id
AND p.file_id(+) = d.file_id
GROUP BY f.tablespace_name)
WHERE C1 NOT IN('USERS')
AND C7 >= &2
ORDER BY c6 ASC;
spool off;
exit;
tablespace_size_spc.sql
SET line 132
SET pages 50
SET pause OFF
SET feedback OFF
SET echo OFF
SET verify OFF
COLUMN c1 heading "Tablespace|Name"
COLUMN c2 heading "File|Count"
COLUMN c3 heading "Allocated|in MB"
COLUMN c4 heading "Used|in MB"
COLUMN c5 heading "%|free" format 99.99
COLUMN c6 heading "Free|in MB"
COLUMN c7 heading "%|used" format 99.99
spool &1;
SELECT c1,ROUND(c3,2) c3,ROUND(c4,2) c4,ROUND(c6,2) c6,ROUND(c7,2) c7,ROUND(c5,2) c5,c2
FROM(
SELECT NVL (b.tablespace_name, NVL (a.tablespace_name, 'UNKOWN')) c1,
mbytes_alloc c3, mbytes_alloc - NVL (mbytes_free, 0) c4,
NVL (mbytes_free, 0) c6,
((mbytes_alloc - NVL (mbytes_free, 0)) / mbytes_alloc) * 100 c7,
100
- (((mbytes_alloc - NVL (mbytes_free, 0)) / mbytes_alloc) * 100) c5,
b.files c2
FROM (SELECT SUM (BYTES) / 1024 / 1024 mbytes_free, tablespace_name
FROM SYS.dba_free_space
GROUP BY tablespace_name) a,
(SELECT SUM (BYTES) / 1024 / 1024 mbytes_alloc, tablespace_name,
COUNT (file_name) files
FROM SYS.dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name(+) = b.tablespace_name
UNION ALL
SELECT f.tablespace_name,
SUM (ROUND ((f.bytes_free + f.bytes_used) / 1024 / 1024, 2)
) "total MB",
SUM (ROUND (NVL (p.bytes_used, 0) / 1024 / 1024, 2)) "Used MB",
SUM (ROUND ( ((f.bytes_free + f.bytes_used) - NVL (p.bytes_used, 0)
)
/ 1024
/ 1024,
2
)
) "Free MB",
(SUM (ROUND (NVL (p.bytes_used, 0) / 1024 / 1024, 2)) * 100)
/ (SUM (ROUND ((f.bytes_free + f.bytes_used) / 1024 / 1024, 2))),
100
- (SUM (ROUND (NVL (p.bytes_used, 0) / 1024 / 1024, 2)) * 100)
/ (SUM (ROUND ((f.bytes_free + f.bytes_used) / 1024 / 1024, 2))),
COUNT (d.file_name)
FROM SYS.v_$temp_space_header f,
dba_temp_files d,
SYS.v_$temp_extent_pool p
WHERE f.tablespace_name(+) = d.tablespace_name AND f.file_id(+) = d.file_id
AND p.file_id(+) = d.file_id
GROUP BY f.tablespace_name)
WHERE C1 NOT IN('USERS')
AND C6 <= &2
ORDER BY c6 ASC;
SPOOL OFF;
exit;
Con el siguiente script podemos ejecutar
Tablespace
Allocated
Used
Free
%
%
File
Name
in MB
in MB
in MB used free
Count
------------------------------ ---------- ---------- ---------- ------ ------ --------- SYSTEM
600 403.13 196.88 67.19 32.81
1
IDX1
11741
11363
378 96.78 3.22
3
Para reportar en base al porcentaje, en lugar de utilizar el parametro -s se utiliza el parametro -p
seguido del porcentaje maximo que puede tener un tablespace:
tbs_monitor.ksh -d DEVELOPMENT -p 80
o Connected.
o Instance: DEVELOPMENT
o Tablespaces with usage >= 80%.
o
o Tablespace
Allocated
Used
Free
%
%
File
o Name
in MB
in MB
in MB used free
Count
o ------------------------------ ---------- ---------- ---------- ------ ------ ---------o IDX1
11741
11363
378 96.78 3.22
3
o IDX2
3201
2696
505 84.22 15.78
2
o IDX5
18385
17394
991 94.61 5.39
3
o DATA02
13312 11520.13 1791.88 86.54 13.46
o DATA03
33797 31709.13 2087.88 93.82 6.18
o DATA01
56629 46606.38 10022.63 82.30 17.70
tbs_monitor.ksh
#!/bin/ksh
#######################################################################
#
# SCRIPT
: tbs_monitor.ksh
#
# DESCRIPTION : This script will monitor usage in tablespaces of a database.
#
If the usage is >= 90% it will send an email to the DBA group.
#
# INPUT FILES : [oracle_sid] only one database is processed
#
# OUTPUT FILES : NONE
#
# CALLED OBJECT: $SCRIPTS/switchdb.ksh
# ASSUMPTIONS : NONE
#
# SETUP INSTRUCTIONS : NONE
#
# COMMAND LINE EXECUTION: tbs_monitor.ksh -d [oracle_sid] [-s sizeinMB] [-p pct]
#
# EXAMPLE: tbs_monitor.ksh -d DEV -s 300
# EXAMPLE: tbs_monitor.ksh -d DEV -p 85
#
# RESTART INSTRUCTIONS: rerun script
# SPECIAL CONSIDERATIONS: NONE
#######################################################################
# Modification Log:
# Version Date
Name
Description
#######################################################################
# 1.0 04-Jul-2006 Delfino Nunez Initial Creation
#######################################################################
########################################################################
# FUNCTION : showHelp
# DESCRIPTION: Print the help for using the script
########################################################################
function showHelp {
echo " Argument
Description"
echo " ------------ ----------------------------------------------"
echo " -d [sid] Oracle sid to check."
echo " -p xx
Report on percentage usage(pct > xx)."
echo " -s xxxxxx Report on MB size usage(sizeMB < xxxxxx)."
echo " -h
This help."
echo " \n\n EXAMPLE: "
echo "
Report tablespaces that have more than 95% space used"
echo "
tbs_monitor.ksh -s EDS2TSDE -p 95"
echo "
Report tablespaces that have less than 300Mb space"
echo "
tbs_monitor.ksh -s EDS2TSDE -s 300"
}
########################################################################
# Main Program start here
########################################################################
# Verify input paramtter and set environment variables
#parm_list=$@
. $DBA_BASE/init
2
4
7
#set -- $parm_list
#check parameters
if [ "$1" != "" ]
then
while [ "$#" != "0" ]
do
case $1 in
-s)
shift
if [ "$1" != "" ]; then
export RPTTYPE="SIZE"
export PSIZE=$1
shift
fi
;;
-d)
shift
if [ "$1" != "" ]; then
export ORACLE_SID=$1
shift
fi
;;
-p)
shift
if [ "$1" != "" ]; then
export RPTTYPE="PCT"
export PSIZE=$1
shift
fi
;;
-h)
showHelp
exit 0;
;;
*)
echo "Bad argument: $1"
showHelp
exit 1;
;;
esac
done
else
showHelp
exit 1
fi
. $SCRIPTS/switchdb.ksh $ORACLE_SID
BOXNAME=`uname -n`
MAILIDS=`cat $DBA_BASE/.forward`
# point to where the rpt file will go
export RPTFILE=$TMP/${ORACLE_SID}_tablespace_rpt.txt
export EMAILMSG=$TMP/tbs_email.txt
export dbpass=`cat $PWDFILE`
#
# SCRIPT
: all.tbs_monitor
#
# DESCRIPTION : This script will call tbs_monitor script for all databases
#
# INPUT FILES : $DBA_BASE/init - configuration file
#
-a all databases are processed
#
-p production (*PD) databases are processed
#
# OUTPUT FILES : NONE
#
# CALLED OBJECT: tbs_monitor
# ASSUMPTIONS : NONE
#
# SETUP INSTRUCTIONS : Need to switchdb first to a default.
#
# COMMAND LINE EXECUTION:
#
# EXAMPLE:
#
# RESTART INSTRUCTIONS: rerun script
# SPECIAL CONSIDERATIONS: NONE
#######################################################################
# Modification Log:
# Version Date
Name
Description
#######################################################################
# 1.0 04-Jul-2006 Delfino Nunez Initial Creation
#######################################################################
############################################################################
# MAIN PROGRAM STARTS HERE
############################################################################
. $HOME/dba/init
priority=1
########################################################################
# FUNCTION : showHelp
# DESCRIPTION: Print the help for using the script
########################################################################
function showHelp {
echo " Argument
Description"
echo " ------------ ----------------------------------------------"
echo " -p
Only production databases."
echo " -a
All databases."
echo " -h
This help."
echo " \n\n EXAMPLE: all.tbs_monitor -a"
echo "
all.tbs_monitor -p"
}
########################################################################
# Main Program start here
########################################################################
if [ -f /var/opt/oracle/oratab ]
then
export ORATAB='/var/opt/oracle/oratab'
elif [ -f /etc/oratab ]
then
export ORATAB='/etc/oratab'
else
# following code from Steve Larson
FOUND_ORATAB=$( find / -name oratab 2>/dev/null | head -1 )
if [ "$FOUND_ORATAB" ] && [ -f "$FOUND_ORATAB" ]
then
ORATAB="$FOUND_ORATAB"
else
exit 1
fi
fi
#check parameter
if [ "$1" != "" ]
then
while [ "$#" != "0" ]
do
case $1 in
-p)
export INSTANCES=`awk -F: '$1 !~ /\#/ && $1 !~ /\*/ {print $1}' $ORATAB|grep "PD"`
shift
;;
-a)
export INSTANCES=`awk -F: '$1 !~ /\#/ && $1 !~ /\*/ {print $1}' $ORATAB`
shift
;;
-h)
showHelp
exit 0;
;;
*)
echo "Bad argument: $1"
echo ""
showHelp
exit 1;
;;
esac
done
else
showHelp
exit 1
fi
if [ "$#" != "0" ]
then
ORACLE_SID=$1
shift
export ORACLE_SID
else
for ORACLE_SID in $INSTANCES
do
swdb $ORACLE_SID
tbs_monitor.ksh -d $ORACLE_SID -s 300
done
fi
Los scripts utilizan otros scripts o archivos que no estan incluidos aqui y que voy a ir publicando, pero
estos scripts pueden usarse como base para crear unos personalizados.
5.3.2 Auditora
Es la actividad consistente en la emisin de una opinin profesional sobre si el objeto sometido a
anlisis presenta adecuadamente la realidad que pretende reflejar y/o cumple con las condiciones que le
han sido prescritas.
5.3.2.1 Habilitacin y deshabilitar el modo de auditora
Funcionamiento comando audit (Oracle):
El comando audit permite iniciar los tipos de auditora que a continuacin se detallan. Este comando
puede funcionar aunque no est activada la auditora de la base de datos, pero no dejar constancia,
para que funcione correctamente es necesario que la auditora est activada.
Sintaxis:
AUDIT
{ sql_statement_clause | schema_object_clause | NETWORK }
[ BY { SESSION | ACCESS } ]
[ WHENEVER [ NOT ] SUCCESSFUL ] ;
sql_statement_clause
: activa la auditora para una sentencia SQL concreta.
schema_object_clause
: activa la auditora para un objeto concreto de la base de datos.
WHENEVER SUCCESSFUL
: activa la auditora slo para operaciones e instrucciones SQL en objetos de esquema que se
completen con xito.
sql_statement_clause
: detiene la auditoria de una sentencia SQL concreta.
schema_object_clause
WHENEVER SUCCESSFUL
: detiene la auditora slo para operaciones e instrucciones SQL en objetos de esquema que se
completen con xito.
PERFORMANCE MONITOR
-Con esta herramienta se visualiza como se esta comportando el disco duro
-A demas de como la base de datos utiliza la memoria y el procesador del servidor los cuales deberan
mantenerse por debajo de un 20%
Herramientas de MySql
MySQL-Proxy
es una herramienta para monitorear y optimizar consultas y bsquedas.
1.- Hacer un Log de todas las consultas que recibe el Servidor
2.- Denegar consultas peligrosas que puedan daar nuestra base de datos
3.- Generar Alias de comandos comunes por ejemplo SLE se podra convertir en SELECT
4.- Balancear la carga entre varios servidores de MySQL en un esquema de Master/Slave
5.- Dar prioridad a ciertas consultas para acelerar la respuesta del servidor
exec master.dbo.xp_sendmail
@recipients ='[email protected]',
@subject ='SERVER X - Fresh Space Issue on C Drive',
@message = 'Free space on C Drive has dropped below 1 gig'
Esta alerta de espacio libre bajo permite tiempo al DBA para resolver el problema
de espacio libre antes de que sea crtico, y provoque procesos fallidos. Tenga en
cuenta que el cdigo anterior tiene un umbral diferente de espacio libre
http://administracionbd.weebly.com/unidad-5.html
http://proyecto359.webnode.mx/unidad5/