A continuación, veremos casos reales de errores en producción y cómo se solucionaron con ejemplos de logs:


Caso 1: Error al hacer rollback de un parche con OPatch
Caso 2: PDB no arranca después de un parche fallido
Caso 3: Migración de una PDB fallida por incompatibilidad de versión
Caso 4: Base de datos no arranca después de migrar la CDB
Caso 5: Error ORA-01578 por corrupción en un bloque después de un patch


CASO 1: Error al hacer rollback de un parche con OPatch

Escenario:

Después de aplicar el parche 31771877, se observó un problema de rendimiento en las consultas. Se decidió hacer rollback, pero OPatch falló con el siguiente mensaje en el log:

Error en el log ($ORACLE_HOME/cfgtoollogs/opatch/opatch2024-02-05_14-22-11.log):

ERROR: OPatch failed because the following files are still in use:
File in use: /u01/app/oracle/product/19c/dbhome_1/lib/libserver19.a

Solución:

Verificar qué procesos están usando archivos en $ORACLE_HOME

fuser -v /u01/app/oracle/product/19c/dbhome_1/lib/libserver19.a

Salida:

/u01/app/oracle/product/19c/dbhome_1/lib/libserver19.a:  2253o  2280o

Los PIDs 2253 y 2280 son procesos activos.

Matar los procesos activos

kill -9 2253 2280

Intentar de nuevo el rollback del parche

cd $ORACLE_HOME/OPatch
./opatch rollback -id 31771877

Reiniciar la base de datos y verificar la versión

SHUTDOWN IMMEDIATE;
STARTUP;
SELECT * FROM V$VERSION;

CASO 2: PDB no arranca después de un parche fallido

Escenario:

Después de aplicar un parche a la CDB, la PDB_TEST no pudo abrirse.

Error en el log (alert_PDB_TEST.log en $ORACLE_BASE/diag/rdbms/cdb19c/CDB19C/trace/):

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
ORA-01113: file 5 needs media recovery

Solución:

Verificar qué archivos necesitan recuperación

SELECT FILE#, STATUS FROM V$RECOVER_FILE;

Salida:

Recuperar la PDB con RMAN
rman target /
RECOVER PLUGGABLE DATABASE PDB_TEST;

Abrir la PDB

ALTER PLUGGABLE DATABASE PDB_TEST OPEN;

CASO 3: Migración de una PDB fallida por incompatibilidad de versión

Escenario:

Se intentó migrar una PDB de Oracle 12.2 a Oracle 19c, pero falló con error de compatibilidad.

Error en el log (alert.log de la CDB en $ORACLE_BASE/diag/rdbms/cdb19c/CDB19C/trace/):

ORA-65040: operation not allowed from within a pluggable database
ORA-00904: "DBA_FEATURE_USAGE": invalid identifier

Solución:

Verificar la versión de la PDB antes de migrarla

SELECT NAME, VERSION FROM CDB_PDBS;

Salida:

Abrir la PDB en modo UPGRADE antes de la migración

ALTER PLUGGABLE DATABASE PDB_TEST OPEN UPGRADE;

Ejecutar el script de actualización

sqlplus / as sysdba
@catupgrd.sql

Cerrar y reabrir la PDB en modo normal

ALTER PLUGGABLE DATABASE PDB_TEST CLOSE;
ALTER PLUGGABLE DATABASE PDB_TEST OPEN;

CASO 4: Base de datos no arranca después de migrar la CDB

Escenario:

Después de migrar la CDB de Oracle 12c a 19c, la base no arranca.

Error en el log (alert.log de la CDB en $ORACLE_BASE/diag/rdbms/cdb19c/CDB19C/trace/):

ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option

Solución:

Abrir la base en modo UPGRADE

STARTUP UPGRADE;

Ejecutar el script de actualización

sqlplus / as sysdba
@catupgrd.sql

Cerrar y reiniciar la base normalmente

SHUTDOWN IMMEDIATE;
STARTUP;

Verificar la versión final

SELECT * FROM V$VERSION;

CASO 5: Error ORA-01578 por corrupción en un bloque después de un patch

Escenario:

Después de aplicar un parche, algunas consultas fallaban con el error ORA-01578.

Error en el log (alert.log de la CDB en $ORACLE_BASE/diag/rdbms/cdb19c/CDB19C/trace/):

ORA-01578: ORACLE data block corrupted (file # 12, block # 305)

Solución:

Identificar el segmento afectado

SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;

Salida:

Intentar reparar el bloque con RMAN

rman target /
BLOCKRECOVER DATAFILE 12 BLOCK 305;

Si no se puede recuperar, restaurar desde backup

RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;

Verificar que la corrupción fue corregida

SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;

Debe retornar 0 filas.

Deja un comentario

Tendencias