Oracle Errors

Antes de poder solucionar un problema, es necesario saber qué ha pasado.
Oracle nos proporciona códigos de error que nos ayudan a identificar la causa del fallo.
Pero… ¿y si no sabes interpretar esos códigos?
Fue lo primero que pensé cuando empecé a pelearme con la infrastructura. Asi decidí crear mi propia documentación de errores, tan útil como la documentación de soluciones.
ORA-00265
SQL> alter database archivelog;
ERROR at line 1:
ORA-00265: instance recovery required, cannot set ARCHIVELOG mode
- la BD no se apagó correctamente
ORA-02097 & ORA-19802
SQL> alter system set db_recovery_file_dest='/mnt/oracle/fast_recovery_area';
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-19802: cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_SIZE
- Antes de especificar un destino para los ARCHIVE LOGs necesitamos especificar un tamaño, eso se hace definiendo el parámetro db_recovery_file_dest_size
ORA-01261 & ORA-01262
Estos errores están relacionados con el parámetro db_recovery_file_dest.
Oracle no puede acceder o encontrar el directorio especificado para db_recovery_file_dest, ubicación de la Fast Recovery Area (FRA). Esto puede deberse a:
Directorio no existe
problemas de permisos
ruta mal configurada
FRA apunta a una ruta mal montada, Oracle verifica permisos y acceso físico
Verifica el contenido de tu archivo init.ora y busca el parámetro db_recovery_file_dest .
Asegúrate de que el directorio especificado exista en el sistema operativo
usuario oracle tenga permisos para acceder y escribir en ese directorio.
SQL> startup
ORA-01261: Parameter db_recovery_file_dest destination string is not valid
ORA-01262: Parameter db_recovery_file_dest destination cannot be translated
Errors in file /u01/app/oracle/diag/rdbms/orcl/trace/orcl_ora_12345.trc:
ORA-19802: cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_SIZE
-- el arranque se detiene en NOMOUNT O MOUNT, sin llegar a abrirse la BD
-- Oracle hace esto antes de abrir los datafiles, si no puede garantizar el acceso al destino
-- de la FRA, no continua el arranque
--Verificalos parametros
show parameter db_recovery_file_dest
show parameter db_recovery_file_dest_size
ALTER SYSTEM SET db_recovery_file_dest_size=10G;
ALTER SYSTEM SET db_recovery_file_dest='/mnt/oracle/fast_recovery_area';
- Error al montar el Filesystem en la FRA
Oracle intenta acceder a una ruta que sí existe como carpeta, pero en realidad está vacía porque el volumen no está montado.
ORA-01261: Parameter db_recovery_file_dest destination string is not valid
ORA-01262: Parameter db_recovery_file_dest destination cannot be translated
Incluso si la BD logra abrirse, los procesos ARC o RMAN intentarán escribir en la FRA. Si en ese momento el filesystem se desmonta o no tiene acceso correcto, se repiten estos errores en el alert.log:
ORA-27040: file create error, unable to create file
Linux-x86_64 Error: 2: No such file or directory
ORA-19809
Cuando se excede el espacio asignado a la FRA (db_recovery_file_dest_size) , y Oracle no puede liberar espacio automáticamente.
ORA-19804
Oracle RMAN (Recovery Manager) no puede reclamar espacio necesario para completar el backup. annot reclaim the space needed to complete the backup.
Ampliar tamaño
Eliminar backups antiguos
DPI-1080: connection was closed by ORA-03113
ORA-03113: indica que la conexión se perdió abruptamente entre cliente y servidor.
- Oracle cierra las sesiones de usuarios inactivos (idle). Este error se da en el lado del cliente, no en el servidor.
DPI-1080: es el error correspondiente en el cliente cx_Oracle o ODPI-C (usado por Python, Node.js, etc.).
Causas comunes:
Sesión matada por inactividad
Timeout
Fallo en el listener o reinicio del servidor
Revisar en el lado del cliente si el firewall tiene timeouts/idle time en:
Firewall
VPN setup
Load balancer
ORA-12170 Connection Timeout
Indica que el cliente intentó conectarse a la base de datos Oracle, pero no recibió respuesta dentro del tiempo límite configurado. Es básicamente un timeout en la conexión inicial.
- Verificar la conectividad:
# Si usas hostname
ping <nombre_servidor>
# O directamente la IP
ping <ip_servidor>
#Conectividad a nivel de puerto
telnet <host> <puerto>
nc -vz <host> <puerto>
Test-NetConnection -ComputerName <host> -Port <puerto> # (Windows)
# Verificar que el listener esté arriba
lsnrctl status
# Verificar conectividad TNS desde cliente a traves de la capa TNS de Oracle
tnsping <alias_tns>
# Verificar ruta
traceroute <host>
# o en Windows:
tracert <host>
ORA-00600: internal error code, arguments: [...][...][...][...]
Error interno del motor de Oracle. Indica un fallo en una verificación interna o corrupción lógica.
Puedes encontrar mas informacion en alert.log, buscar el trace file en $ORACLE_BASE/diag , e interpretar los arguments para diagnosticar corrupción de bloques, errores de redo o bugs.
- ORA-00600 [2662]: ocurre cuando el SCN leído es menor al SCN requerido, generalmente por un recovery inconsistente.
ORA-01555: snapshot too old
Ocurre cuando una consulta larga intenta leer versiones antiguas de bloques del undo tablespace, pero esos bloques ya fueron sobrescritos.
Vistas que pueden dar mas información:
v$undostat
v$transaction
ORA-19502 / ORA-19504
Error en la escritura de backup (RMAN o exportación). Puede ser por:
Espacio
Permisos
Fallos en disco/NFS
Recomendación, verificar:
Permisos en el destino de backup
Configuración del db_recovery_file_dest y rman channels
Este post se actualizará periódicamente.
Y tú, que errores conoces?



