La base de datos Oracle bloquea automáticamente un recurso usado por una transacción para prevenir que otras transacciones realicen alguna acción que requiera acceso exclusivo sobre el mismo recurso. La base de datos adquiere automáticamente diferentes tipo de bloqueos con diferentes niveles de restricción dependiendo del recurso y de la operación que se realice.
Los bloqueos que realiza la base de datos Oracle están divididos en las siguientes categorías:
- Bloqueos DML: Protegen los datos, garantizando la integridad de los datos accedidos de forma concurrente por varios usuarios. Por ejemplo, evitan que dos clientes compren el último artículo disponible en una tienda online. Estos bloqueos pueden ser sobre un sólo registro o sobre la tabla completa. Las sentencias DML:
INSERT, UPDATE o DELETE
, realizan un bloqueo exclusivo por la filas afectadas por su cláusulaWHERE
. Ocurre lo mismo con la sentenciaSELECT ……..FOR UPDATE
- Bloqueos DDL: Protegen la definición del esquema de un objeto mientras una operación DDL actúa sobre él. Los bloqueos se realizan de manera automática por cualquier transacción DDL que lo requiera. Los usuarios no pueden solicitar explícitamente un bloqueo DDL.
- Bloqueos del sistema: La base de datos Oracle usa varios tipos de bloqueos del sistema para proteger la base de datos interna y las estructuras de memoria.