0% encontró este documento útil (0 votos)
99 vistas7 páginas

Deadlocks en Oracle 11g: Guía y Soluciones

Este documento describe un trabajo de investigación sobre los deadlocks en Oracle 11g. Explica que los deadlocks ocurren cuando dos o más hilos se bloquean mutuamente al esperar recursos que el otro mantiene bloqueado, formando un ciclo de bloqueo. Detalla cómo identificar un deadlock revisando la vista V$LOCK y une formas de evitarlos usando bloqueo optimista en lugar de bloqueo pesimista. Concluye que aunque los deadlocks son difíciles de prevenir, existen alternativas de control de concurrencia y métodos para detectarlos.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
99 vistas7 páginas

Deadlocks en Oracle 11g: Guía y Soluciones

Este documento describe un trabajo de investigación sobre los deadlocks en Oracle 11g. Explica que los deadlocks ocurren cuando dos o más hilos se bloquean mutuamente al esperar recursos que el otro mantiene bloqueado, formando un ciclo de bloqueo. Detalla cómo identificar un deadlock revisando la vista V$LOCK y une formas de evitarlos usando bloqueo optimista en lugar de bloqueo pesimista. Concluye que aunque los deadlocks son difíciles de prevenir, existen alternativas de control de concurrencia y métodos para detectarlos.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Universidad Latinoamericana de Ciencia y Tecnologa

Bachillerato en Ingeniera Informtica

Curso:
Administracin de Bases de datos

Trabajo de Investigacin:
DeadLocks en Oracle 11g

Autor:
Javier Roberto Daz Muoz

San Jose, Costa Rica


6 de noviembre, 2015

Contenido
Introduccin ........................................................................................................................................ 3
Objetivos ............................................................................................................................................. 3
Objetivo General ............................................................................................................................. 3
Objetivos Especficos ...................................................................................................................... 3
Alcances y limitaciones....................................................................................................................... 3
Alcances .......................................................................................................................................... 3
Limitaciones .................................................................................................................................... 4
Qu es un Deadlock? ......................................................................................................................... 4
Cmo ocurre un deadlock? ................................................................................................................ 4
Cmo identificar un deadlock en la Base de datos? .......................................................................... 5
Cmo evitar los interbloqueos? ......................................................................................................... 6
Conclusiones y recomendaciones........................................................................................................ 6
Bibliografa ......................................................................................................................................... 7

Introduccin

Objetivos
Objetivo General

Los motores de bases de datos son como tal


sistemas bastante complejos, esto debido a los
diferentes aspectos que deben controlar para
poder mantener o dar el servicio de soportar
bases de datos unificadas que a la ves son
accedidas y modificadas por cientos, miles o
millones de usuarios de forma simultnea. A
partir de esto nos pueden surgir muchas
preguntas del como motores, en el caso muy
especial de esta investigacin Oracle, hacen
para poder hacer esta monumental tarea que si
lo viramos dcadas atrs podra parecer desde
apotesica hasta utpica.
Como una de las preguntas del cmo se hace
es sobre de qu manera se controla que varios
usuarios estn modificando o accediendo el
mismo dato al mismo momento, y es que si lo
llevamos a la lgica sencilla esto
automticamente nos genera conflictos sobre
quien podra modificar el dato y quien no,
adems si lo consultara en ese mismo
momento cual dato sera el que aparecera?
Esto Oracle lo hace a travs de los deadlocks.
Y es sobre esa ltima palabra en la cual vamos
a adentrarnos a lo largo de esta investigacin,
vamos a profundizar ms en lo que es
verdaderamente
un
deadlock,
como
manejarlos, y cmo hacer que nos jueguen a
favor y no en contra en nuestras bases de datos
y aplicaciones.
Espero que el siguiente trabajo sirva como
gua introductoria a este tema y permita a sus
lectores orientarse y encontrar una puerta de
entrada a este tema que les permita profundizar
an ms en su funcionamiento.

Investigar sobre la figura de los


deadlocks en el motor de base de
datos de Oracle 11g.

Objetivos Especficos

Conocer cul es la definicin correcta


de un deadlock.
Identificar como ocurre un deadlock.
Averiguar la forma de identificar un
deadlock existente.
Definir cules son las mejores
prcticas de programacin y en
diseo de Base de datos para evitar
los deadlocks en aplicaciones
concurrentes o en hilos.

Alcances y limitaciones
Alcances

Definicin de los deadlock en Oracle


11g
Explicacin del cmo se genera un
interbloqueo en un alto nivel
Puntualizacin de algunas de las
mejores prcticas a nivel de
programacin y de diseo de Base de
datos para evitar deadlocks.

Limitaciones

Explicacin a bajo nivel de


funcionamiento de un deadlock
Demostraciones de deadlocks en
aplicaciones o bases de datos a nivel
prctico
Deadlocks o similares en otros
motores de bases de datos.
Descripcin y ejemplificacin de
todas las mejores prcticas para evitar
los deadlocks en aplicaciones
concurrentes.

Thread 1 mantiene un bloqueo en A y


solicita un bloqueo en B
Thread 2 mantiene un bloqueo en B y
solicita un bloqueo en A
Existen 2 tipos de deadlocks:

Qu es un Deadlock?
Deadlock describe una condicin en la que
dos o ms hilos se bloquean (quedan
colgados) para siempre, ya que estn a la
espera el uno del otro. Hay muchas causas de
bloqueos. El Thread Analyzer detecta
deadlocks muertos que son causados por el
uso inadecuado de los bloqueos de exclusin
mutua. Este tipo de bloqueo se encuentra
comnmente en aplicaciones de subprocesos
mltiples. Un proceso con dos o ms hilos
puede causar un deadlock en las siguientes
condiciones se cumplen:

Threads que ya estn sosteniendo


bloqueos y solicitan un nuevo
bloqueo sobre el mismo dato.
Las solicitudes de nuevos bloqueos se
realizan concurrentemente.

Cmo ocurre un deadlock?


Dos o ms hilos forman una cadena circular
en la que cada hilo espera que el siguiente
bloqueo en la cadena se libere, esto de forma
circular.
Aqu est un ejemplo simple de una
condicin de deadlock:

Deadlock potencial: no
necesariamente ocurre en una
ejecucin pero puede ocurrir en
cualquier ejecucin del programa,
dependiendo de la calendarizacin de
los hilos y los tiempos de solicitud de
bloqueos de los hilos.
Deadlock actual: Ocurre durante la
ejecucin de un programa, este causa
que el hilo involucrado se cuelgue
pero puede causar o no que el
proceso entero se cuelgue.

Cmo identificar un deadlock


en la Base de datos?
Cuando Oracle detecta que se produjo un
Deadlock, lo que hace es parar la ejecucin
del procedimiento y mostrar el siguiente
mensaje de error: ORA-00060: deadlock
detected while waiting for resource.
Cuando se produce un error como este,
Oracle genera un archivo de trace en el
directorio UDUMP con informacin acerca
del error.
En Oracle hay una vista v$lock que indica los
objetos que se encuentran en bloqueo, el
identificador de usuario, sesion y el tipo de
bloqueo. Si realizamos un join con la
tabla dba_objects podemos obtener el nombre
y tipo de los objetos bloqueados:
SELECT
decode([Link],'TM','TABLE','TX','Record(s)')
TYPE_LOCK,
decode([Link],0,'NO','YES') WAIT,
[Link] OSUSER_LOCKER,
[Link] PROCESS_LOCKER,
[Link] DBUSER_LOCKER,
O.OBJECT_NAME OBJECT_NAME,
O.OBJECT_TYPE OBJECT_TYPE,
concat(' ',[Link]) PROGRAM,
[Link] OWNER
FROM v$lock l,dba_objects o,v$session s
WHERE
l.ID1 = o.OBJECT_ID
AND [Link] =[Link]
AND [Link] in ('TM','TX');

Los dos tipos de bloqueos a nivel de


objetos que podemos visualizar es:

(TM) bloqueos de tablas: Los


bloqueos a nivel de tabla son creados
cuando se ejecuta una sentencia DML
del tipo: update, insert, delete, select
..for update sobre la tabla entera.
(TX) bloqueos a nivel de fila: Los
bloqueos a nivel de fila se crean
cuando se ejecutan sentencias DML

contra un conjunto de registros


especficos.

Cmo evitar los


interbloqueos?

Conclusiones y
recomendaciones

La forma de evitar los interbloqueos de forma


proactiva es cambiar el paradigma de
bloqueos, ya que cuando hay deadlocks se
utiliza como tal el bloqueo pesimista.

De acuerdo con lo investigado en este trabajo


se llega a las siguientes conclusiones:

Sin embargo existe otro paradigma de


manejos de concurrencia en bases de datos el
cual es el Bloqueo optimista con control de
concurrencia.
El bloqueo optimista no bloquea los registros
que se van a actualizar y asume que los datos
que estn siendo actualizados no van a
cambiar desde que se han ledo. Puesto que
en nuestro caso no se puede asumir esto es
necesario un control de la concurrencia, de
esta manera el bloqueo optimista con control
de concurrencia asegura que los datos que
estn siendo escritos son consistentes con los
ledos en primera instancia, es decir que
ninguna otra transaccin ha actualizado los
datos despus de la lectura. El procedimiento
para asegurar la consistencia es muy sencillo:
se leer un valor junto al registro, se
actualizar ese valor a la BD cuando el
registro es actualizado.
Ventajas:

Lo soportan todas las bases de datos


Es fcil de usar
No consume recursos extra en la BD.
No crea bloqueos ni deadlocks.

Se recomienda los siguientes puntos:

Desventajas:

Es necesario crear triggers en la BD.


Requiere un pequeo trabajo extra.
Retrasa las actualizaciones.
Todas las aplicaciones que actualizan
una base de datos deben conocer el
mecanismo de consistencia.

Los deadlocks son producto del


control de concurrencias de los
motores de base de datos.
Se pueden dar especialmente en
escenarios de programas multihilos.
Hay formas sencillas de poder
identificar los interbloqueos a travs
de las tablas de System a nivel de
base de datos.
Es muy difcil evitar los
interbloqueos si se utiliza el bloqueo
pesimista como mtodo de control de
concurrencia ya que es un riesgo de
este paradigma que evita la
modificacin concurrente de datos en
la base de datos
Se tienen alternativas a este
paradigma de control de
concurrencias como lo es el bloqueo
optimista que funciona de una forma
muchsimo ms segura sin generar
deadlocks sin embargo es mucho ms
difcil de implementar.

Seguir investigando otras medidas


para evitar deadlocks
Crear alarmas de cuando se detecte
un deadlock en la base de datos con
el fin de garatizar la continuidad del
servicio
Investigar y analizar de una forma
ms profunda el paradigma de
bloqueo optimista con control de
concurrencia.

Bibliografa
Gomez, H. (17 de Septiembre de 2014).
[Link]. Obtenido
de
[Link]
4/09/[Link]
Gracia, L. M. (10 de Enero de 2011).
[Link].
Obtenido de
[Link]
2011/01/10/tecnicas-de-bloqueosobre-base-de-datos-bloqueopesimista-y-bloqueo-optimista/
Oracle Corp. (6 de 11 de 2015).
[Link]. Obtenido de
[Link]:
[Link]

También podría gustarte