ORA-02049: Timeout: distributed transaction waiting for lock (timeout de bloqueo en transacción distribuida)
Oracle¿Qué significa?
Una transacción distribuida superó DISTRIBUTED_LOCK_TIMEOUT mientras esperaba un bloqueo en la base de datos remota. La transacción agotó el tiempo de espera.
¿Por qué ocurre?
Una transacción que se ejecuta a través de un database link espera una fila bloqueada en el lado remoto; transacciones largas en la sesión remota, latencia de red o bloqueos en conflicto mantenidos en ambos extremos.
Cómo solucionarlo
Encuentre y resuelva el bloqueo y la sesión bloqueante en la base de datos remota (v$lock, v$session). Mantenga las transacciones distribuidas cortas y adquiera los bloqueos necesarios lo más tarde posible. Si es necesario, aumente DISTRIBUTED_LOCK_TIMEOUT según la carga de trabajo (SPFILE, requiere reinicio). Para transacciones distribuidas in-doubt, examine la vista DBA_2PC_PENDING y resuélvalas manualmente si es necesario.
Más entradas de este motor
- ORA-28000The account is locked (la cuenta está bloqueada)
- ORA-01578Oracle data block corrupted (file #, block #) (bloque de datos de Oracle corrupto)
- ORA-01722Invalid number (número no válido)
- enq: TX - row lock contentionEspera: sesión bloqueada por un bloqueo de fila que mantiene otra transacción
- log file syncEspera: sesión esperando a que LGWR escriba el redo en disco al hacer commit
- db file sequential readEspera: lectura física de un solo bloque, normalmente un acceso a índice o tabla
- db file scattered readEspera: lectura física multibloque, normalmente un full table scan o index fast full scan