ORA-01578: Oracle data block corrupted (file #, block #) (bloque de datos de Oracle corrupto)
Oracle¿Qué significa?
Un bloque de datos del datafile indicado está corrupto; Oracle informa de que el bloque no superó su comprobación de consistencia (checksum). Se trata de corrupción física.
¿Por qué ocurre?
Fallo de disco/hardware, errores en la capa de almacenamiento, problemas del sistema operativo o de la controladora, bloques escritos parcialmente tras un corte de energía, o un backup/restore corrupto.
Cómo solucionarlo
Confirme la corrupción y su alcance: RMAN> VALIDATE DATABASE / VALIDATE CHECK LOGICAL DATAFILE n; ejecute también DBVERIFY (dbv) y revise v$database_block_corruption. Si existe un backup, recupere a nivel de bloque: RMAN> RECOVER DATAFILE n BLOCK m; o, para todos los bloques listados, RMAN> RECOVER CORRUPTION LIST; (el antiguo comando BLOCKRECOVER está obsoleto desde 11g). Si es un bloque de índice, reconstruya el índice. Compruebe siempre el estado del hardware/disco; la causa raíz suele ser el almacenamiento.
Más entradas de este motor
- ORA-01000Maximum open cursors exceeded (se superó el máximo de cursores abiertos)
- ORA-00018Maximum number of sessions exceeded (se superó el número máximo de sesiones)
- ORA-28000The account is locked (la cuenta está bloqueada)
- ORA-01722Invalid number (número no válido)
- ORA-02049Timeout: distributed transaction waiting for lock (timeout de bloqueo en transacción distribuida)
- 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