You are on page 1of 3

UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE INGENIERA ESCUELA DE CIENCIAS NOMBRE: Cristina Factos SEMESTRE: Sexto PARALELO: Primero

Tipos de bloqueos en Oracle El mecanismo de bloqueo en la base de datos por defecto es un bloqueo a nivel de fila. Las diferentes transacciones pueden actualizar diferentes filas dentro de la misma tabla sin interferirse unas a otras. A pesar de que el modo por defecto de bloque es a nivel fila, Oracle 10 permite bloqueos a un nivel superior si son necesarios. EXCLUSIVE MODE Cualquier transaccin que intenta actualizar un fila en la tabla bloqueada debe esperar encolada, hasta que la transaccin que ha bloqueado la tabla termine. Es la forma ms estricta de bloqueo. SQL> LOCK TABLE hr.employees IN EXCLUSIVE MODE; ROW SHARE Permite el acceso concurrente a la tabla bloqueada, pero prohbe a las sesiones hacer un bloqueo en EXCLUSIVE MODE. ROW EXCLUSIVE Lo mismo que ROW SHARE, pero tambin prohbe hacer un bloque ROW SHARE, Este es el tipo de bloqueo que se obtiene automticamente cuando se hace un update, insert o delte. SHARED Permite queries concurrentes pero prohbe updates a una tabla bloqueada. Este tipo de bloque se produce automticamente cuando se crea un ndice o una tabla. Prohbe a otras sesiones bloquear la tabla en modo SHARE o actualizar registros. SHARE ROW EXCLUSIVE: Permite consultar toda la tabla y permite a los otros consultar registros dentro de la tabla, preo prohbe a otros usuarios bloquear la tabla en modo SHARE o realizar actualizaciones de registros. EXCLUSIVE, permite consultar la tabla bloqueada, pero prohbe cualquier tipo de actividad en ella. Este tipo de bloqueos se utiliza para el borrar una tabla (drop). Como cualquier peticin de bloqueo, los bloqueos manuales esperan encolados hasta que todas las sesiones previamente tenan bloqueos o que los haban solicitado, los deshagan. El comando LOCK acepta un argumento NOWAIT que permite regresar el control inmediatamente, si la tabla est bloqueada por otra sesin. SQL> LOCK TABLE hr.employees IN SHARE MODE NOWAIT; LOCK TABLE hr.employees IN SHARE MODE NOWAIT * ERROR at line 1: ORA-00054: resource busy and acquire with NOWAIT specified Bloqueos en sentencias DML Las sentencias DML, realizan dos tipos de bloqueos: Un bloqueo rew-exclusive en cada fila o filas que queremos actualizar, Habr un solo bloqueo rowexclusive independientemente del nmero de filas que queramos cambiar. Y un bloqueo shared a nivel tabla en la tabla que vamos a actualizar. Esto para prevenir que otra sesin bloquee la tabla completa, (puede darse el caso en un drop y en trncate), mientras se realiza el cambio. Bloqueos en sentencias DDL Para ejecutar una sentencia DDL requiere un bloqueo exclusivo en el objeto a modificar. Este no se puede obtener hasta que todas las transacciones DML contra la tabla hayan finalizado,

liberando sus bloqueos exclusivos y shared. El bloqueo exclusivo necesario para cualquier sentencia DDL se solicita automticamente, pero si no se puede obtener, normalmente porque otra sesin tenga bloqueada la tabla termina inmediatamente con error. ORACLE usa automticamente diferentes tipos de bloqueos para el control del acceso concurrente a los datos y prevenir la interaccin destructiva entre usuarios. Bloquea automticamente los datos fuente durante la transaccin para evitar que otras transacciones hagan algo requiriendo acceso exclusivo de los mismos datos fuente. Oracle clasifica los bloqueos en estas categoras: Data Locks (DML Locks) El Data Locks protege los datos (Table Locks: protege la tabla entera, Row Locks a nivel de filas). Dictionary Locks (DDL Locks) Protege la estructura de los objetos, las definiciones de las tablas y de las vistas. Internal Locks and Latches Protege las estructuras internas de la base de datos como los archivos de datos. Son totalmente automticos. Distributed Locks Aseguran que los datos y otras fuentes distribuidas entre varias instancias del servidor en paralelo de Oracle sean consistentes. Parallel ce management (PCM) locks Son bloqueos distribuidos que cubren uno o ms bloques de datos (bloques de tablas o ndices) en el buffer de la cach. Los bloqueos que se han producido estn dentro de las dos primeras categoras. Obtenemos un tipo de bloqueo de la segunda categora cuando trabajamos con el ndice. Dentro de la categora Data Locks obtenemos: El propsito de un data lock es garantizar la integridad de los datos durante el acceso concurrente de mltiples usuarios. TX Row Locks Una transaccin adquiere un bloqueo de datos exclusivo para cada fila individual modificada por una de los siguientes clusulas INSERT, UPDATE, DELETE and SELECT with the FOR UPDATE. Se mantiene el bloqueo hasta que la transaccin no haga commit o rollback. TM Table Locks Una transaccin adquiere un table locks en las siguientes instrucciones: INSERT, UPDATE, DELETE and SELECT with the FOR UPDATE. Estas operaciones DML requieren bloqueos de tabla para dos propsitos: uno para controlar el acceso a la tabla durante la transaccin y dos para prevenir los conflictos que estas operaciones pudieran producir. Un bloqueo de tabla se puede mantener en varios modos RS(Row Share) , RX (Row exclusive), S (share), SRX (share row exclusive) y X (exclusive). Row Exclusive Locks (RX) Indica que la transaccin que mantiene el bloqueo ha hecho uno o ms updates sobre filas de la tabla. Un row exclusive es adquirida automticamente para una tabla que ha sido modificada por uno de las siguientes clusulas: INSERT INTO table UPDATE table DELETE FROM table ..... LOCK TABLE table IN ROW EXCLUSIVE MODE; Se permite a otras transacciones para consultas como insert, update, delete o bloqueos de filas concurrentes en la misma tabla. Permiten a mltiples transacciones obtener simultneamente bloqueos exclusivos y compartidos sobre la misma tabla. No se permite otra transaccin no puede bloquear concurrentemente la tabla usando las siguientes clusulas.

LOCK TABLE table IN SHARE MODE; LOCK TABLE table IN SHARE EXCLUSIVE MODE; LOCK TABLE table IN EXCLUSIVE MODE; Exclusive Table Locks (X) Es el modo ms restrictivo de la tabla de bloqueos, permite a la transaccin que tiene el bloqueo exclusivo escrituras en la tabla. Es adquirido mediante: LOCK TABLE table IN EXCLUSIVE MODE; Slo una transaccin puede obtener el bloqueo exclusivo para una tabla. Slo permite a otras transacciones hacer consultas (query). La transaccin que obtiene el bloqueo impide a las dems transacciones realizar cualquier tipo de operaciones de manejo de datos o realizar cualquier tipo de bloqueo. Share Table Locks (S) Un bloqueo compartido es adquirido automticamente por la tabla especificada en la siguiente sentencia. LOCK TABLE table IN SHARE MODE; Una transaccin que mantiene un bloqueo compartido permite a otras transacciones slo consultas a la tabla, bloquear filas especficas con SELECT ... FOR UPDATE, o ejecutar LOCK TABLE ... IN SHARE MODE. No permite que otras transacciones hagan actualizaciones. Mltiples transacciones pueden mantener bloqueos compartidos para la tabla. No permite que otras transacciones modifiquen la tabla que una transaccin mantiene bloqueada por un bloqueo compartido. LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE; LOCK TABLE table IN EXCLUSIVE MODE; LOCK TABLE table IN ROW EXCLUSIVE MODE; Los otros tipos de bloqueos que se pueden dar dentro de esta categora no se han producido durante las transacciones realizadas en la prctica. Durante la creacin del ndice se obtiene un nuevo tipo de bloqueo. DL Direct Loader Index Creation Cuando creas un ndice de una tabla se adquiere un bloqueo compartido exclusivo.

You might also like