1. Saturación de sesiones de
una base de datos
Procesos y Scripts para Saturar
Parte 1
GRUPO 3
Danny Rosero Vega
Pamela Andrade Fuertes
Myrian Medina Tapia
Daniel Quishpi Condo
Roberto Chasipanta Llulluna
Marco Sucuzhanay Lema
ESPE – PAC BD – Junio 2014
2. Para realizar estos ejemplos de Saturación de una
Base de datos, se utilizó un servidor en producción
real.
Vamos a realizar ejemplos de saturación y análisis
de base de datos utilizando herramientas propias de
Oracle así como pequeños scripts que nos ayuda a
identificar la carga de trabajo y bloqueos en la
misma.
Como antecedentes a los ejemplos presentados su
utilizara una base de datos Oracle 11G R2 sobre una
plataforma Red Hat Enterprise 6.
3. Para nuestro ejemplo vamos a realizar un respaldo de
esquema comercial de la base de datos, proceso que
aproximadamente toma alrededor de 40 minutos y se
realiza a diario a las 02:00 horas todos los días
En esta ocasión lo vamos a realizar a la una hora antes
de cierre de Puntos de Venta para no afectar mucho el
rendimiento de las cajas, como se indicó anteriormente
es una base de datos real en producción.
4. Primero nos vamos a conectar al servidor de Base de Datos mediante un
SSH a una ventana de terminal para ejecutar el Script de respaldo.
Una vez iniciado el proceso vamos a utilizar dos herramientas una
propietaria de Oracle y el Cliente Navicat para analizar el
rendimiento y validar cuales son los procesos y usuarios que se
encuentran saturando la base de datos.
5. Vamos a ingresar a Oracle Enterprise Manager, herramienta de
administración de Oracle que nos permitirá realizar análisis
exhaustivos de nuestras sesiones, procesos, análisis SQL, etc.
Para esto vamos a ingresar mediante un navegador web digitando la
dirección del servidor de esta manera https://{ ip servidor
}:1158/em/
6. Ingresamos con claves de SYSDBA por ejemplo con el
usuario sys
Y nos dirigimos a la pestaña rendimiento
7. En la siguiente imagen se acomodó las tres ventanas para validar la
saturación de la base de datos de acuerdo a la gráfica estadística del
Enterprise Manager, también en la ventana de Navicat ejecutamos un
query que nos permite revisar los procesos que en ese momento se
están ejecutando, sus propietarios y los objetos que estos van
afectando.
8. En esta ampliación podemos observar a qué nivel está
sucediendo la saturación.
Script Utilizado para validar los procesos ejecutándose
en nuestro servidor.
9. Ejecución del Query
En este ejemplo hemos podido observar un ambiente
de saturación controlado ya que lo estamos
generando mediante un script de respaldo, sabemos
cuál es la causa, de esta manera no podemos hacer
un análisis más profundo.
10. En este ejemplo vamos a ver una
saturación que sucede en un día normal
de trabajo, como lo analizaremos y que
soluciones posibles podemos tomar.
11. Como primer paso vamos a monitorear la base de datos así
que vamos a ingresar a nuestro Enterprise manager.
Nos vamos a dirigir a la pestaña Rendimiento.
12. En la pestaña rendimiento vamos a analizar qué es lo que está causando
molestia en los usuarios de la base de datos los mismos que han reportado
lentitud en los sistemas y pequeños congelamientos de pantalla.
Como podemos observar el rendimiento de la base de datos está
comprometida a nivel de usuario con pequeños bloqueos, lo que confirma lo
reportado por los usuarios, vamos a analizar y encontrar la causa de esto.
Para esto Oracle nos presenta varias alternativas de herramientas que
podemos utilizar para su análisis, a continuación presento las diversas
alternativas que podemos utilizar para analizar el rendimiento de la base.
13. Hemos seleccionado Actividad de Sesión Superior en donde vamos a validar que
sesiones y aplicaciones son las que más recursos están consumiendo en nuestra base de
datos y de igual forma porque hay pequeños bloqueos en la misma.
En esta podemos validar que hay un SQL especifico que esta con una alta
actividad en comparación con los otros.
14. De igual forma podemos observar la sesión que
esta con una actividad alta fuera de lo normal, y
otros datos como la aplicación y el usuario que lo
realiza.
15. El análisis también lo podemos realizar utilizando Scripts
directamente desde un cliente de la base de datos.
16. Podemos validar el usuario que está bloqueando la base de datos, en este punto
podríamos tomar una decisión, podríamos matar la sesión para liberar el bloqueo o
simplemente dejar que el proceso termine, pero en este caso vamos analizar el SQL que
está saturando el trabajo.
Podemos observar todos los procesos que se encuentran en trabajo y
encolados
17. Volvemos a volver a Enterprise manager y vamos a realizar un
análisis de SQL dando click en el id del SQL que está generando el
cuello de botella.
Un resumen rápido que nos ayuda a identificar la aplicación que esta
causando la saturación, en conjunto con estadísticas de ejecución de ese
aplicativo, en donde podemos apreciar que las esperas activas son muy
altas, algo que no es normal.
18. Para realizar un análisis de SQL, tomaremos este otro proceso del Módulo
ventas que de igual forma tiene un porcentaje de actividad alto y vamos a
dar clic en el SQL ID del que tiene la actividad más alta.
Vamos a validar en la pestaña General cual es el Usuario y otra información
importante sobre la sesión de bloqueo.
19. Identificado en SQL de bloqueo realizaremos un Detalle de ejecución
para revisar en qué punto sucede el bloqueo y saturación de la base,
toda esta información es importante ya que será enviada al equipo
de desarrollo para q haga las correcciones necesarias a los
aplicativos y mejorar los rendimientos de la aplicación sobre la base
de datos.
20. Todo este informe que se genera puede ser guardado y enviado,
aquí podemos ver el plan de ejecución en donde identificaremos el
punto de bloqueo.
21. Podemos detectar en que momento del SQL sucede la saturación, al
momento de realizar varios JOINs sobre las tablas FA_VENTAS, etc.
Así como lo muestra la siguiente imagen:
Toda esta información será enviada para que el departamento de
desarrollo pueda corregir los JOINs y optimizar el SQL que está
causando la saturación de la base de datos.
Es así, como hemos terminado un análisis completo de un Bloqueo /
Saturación de la base de datos que nos permitirá llegar a una
solución y que la base de datos no se vea afectada en un futuro.