sql >> Base de Datos >  >> RDS >> Oracle

¿Oracle bloqueará toda la tabla mientras realiza una declaración DML o solo la fila?

Podemos emitir bloqueos explícitamente con el comando LOCK TABLE. Más información

De lo contrario, una inserción no bloquea ninguna otra fila. Debido al modelo de aislamiento de lectura de Oracle, esa fila solo existe en nuestra sesión hasta que la confirmamos, por lo que nadie más puede hacer nada con ella. Más información .

Una declaración de actualización solo bloquea las filas afectadas. A menos que hayamos implementado una estrategia de bloqueo pesimista con SELECCIONAR... PARA ACTUALIZAR. Más información .

Finalmente, en Oracle los escritores no bloquean a los lectores. Entonces, incluso las filas bloqueadas pueden ser leídas por otras sesiones, simplemente no se pueden cambiar. Más información .

Este comportamiento está integrado en el kernel de Oracle y no es configurable.

Justin hace un buen comentario sobre el bloqueo DDL a nivel de tabla. Ese bloqueo hará que una sesión que ejecuta DDL en la tabla espere hasta que se confirme la sesión DML, a menos que DDL sea algo así como CREAR ÍNDICE, en cuyo caso fallará inmediatamente con ORA-00054.