Los errores más comunes
Introducción
Los errores Oracle de acceso a los datos tienen el formato ORA-nnnnn, y existen miles. En este capítulo veremos aquellos que se producen con más frecuencia.
Existen otros errores Oracle y se dividen por tipos. Por ejemplo, los errores específicos de PL/SQL son los PLS-nnnnn, los errores vinculados a las copias de seguridad son los RMAN-nnnnn, los errores de carga con SQL*Loader son los SQL*LOADERnnnnn, etc.
En Internet encontrará sitios que recogen todos los errores existentes. A continuación, puede ver algunos:
Sobre el acceso a los datos (LDD/LMD)
Código del error |
Mensaje de Oracle |
Causa del error |
Solución |
ORA-00001 |
unique constraint (string.string) violated |
Un UPDATE o un INSERT provoca una clave duplicada. |
Elimine la restricción UNIQUE en la clave, o corrija el INSERT o el UPDATE. |
ORA-00051 |
timeout occurred while waiting for a resource |
Ha sobrepasado el tiempo de espera desde la ejecución del comando. Una fila de una tabla está bloqueada por otro usuario y, pasado un tiempo de espera, Oracle devuelve este error. |
Vuelva a ejecutar el comando más tarde. |
ORA-00054 |
resource busy and acquire with NOWAIT specified |
La tabla o las filas a las que se desea acceder están reservadas (bloqueadas) por otro usuario y el parámetro NOWAIT está activado. Esto significa que en este caso Oracle no espera. |
Espere unos minutos y vuelva a ejecutar el comando o elimine el parámetro NOWAIT para que Oracle espere a que el recurso sea liberado. |
ORA-00060 |
deadlock detected while waiting for resource |
Intenta actualizar una fila que está siendo actualizada por otro usuario. |
Una u otra sesión debe realizar un ROLLBACK o un COMMIT para liberar el recurso. |
ORA-00100 |
no data found |
El SELECT no ha devuelto ninguna fila. |
Compruebe la cláusula WHERE y los datos de la tabla. |
ORA-00900 |
invalid SQL statement |
La sintaxis de su consulta o de su procedimiento almacenado no es correcta. |
Corrija la sintaxis, compruebe sobretodo el formato de las fechas respecto a la variable NLS_DATE_FORMAT declarada en la base de datos. |
ORA-00900 |
to ORA-01499 3-7statement. ORDER BY cannot be used to create an ordered view or to insert in a certain order. |
El comando SQL ORDER BY no está permitido con un CREATE VIEW o INSERT. |
Compruebe la sintaxis del comando. |
ORA-00901 |
invalid CREATE command |
El comando CREATE no es correcto. |
Corrija la sintaxis. |
ORA-00902 |
invalid datatype |
En la creación o modificación de una tabla no ha utilizado un tipo de columna Oracle correcto. |
Compruebe los formatos asignados a las columnas (CHAR, NUMBER, etc.). Compruebe el contenido de sus variables en un UPDATE o en un INSERT. |
ORA-00903 |
invalid table name |
Nombre de tabla incorrecto. Un nombre de tabla debe tener como máximo 30 caracteres y solo pueden ser alfanuméricos. O bien la tabla solicitada no existe o bien no puede acceder... |
Sobre las transacciones y las sesiones (TCL/DCL)
Código del error |
Mensaje de Oracle |
Causa del error |
Solución |
ORA-00018 |
maximum number of sessions exceeded |
Se ha sobrepasado el número de sesiones máximas permitidas. |
Aumente el valor del número máximo de sesiones: parámetro SESSIONS ALTER system SET SESSIONS =250 scope=spfile; |
ORA-00019 |
maximum number of session licenses exceeded |
Se han utilizado todas las licencias. |
Aumente el valor del número máximo de licencias de sesiones: parámetro LICENSE_MAX_ SESSIONS |
ORA-00021 |
session attached to some other process cannot switch session |
Una sesión de usuario está siendo utilizada por otro usuario. |
Controle las sesiones activas. |
ORA-00022 |
invalid session ID- access denied |
La sesión no existe o no tiene privilegios para utilizarla. |
Utilice una sesión válida o compruebe los privilegios de usuario. |
ORA-00025 |
failed to allocate string |
Falta memoria para una cadena de caracteres. |
Aumente el tamaño de la memoria de la SGA. |
ORA-00026 |
missing or invalid session ID |
El comando ALTER SYSTEM KILL SESSION indica que el ID no existe o no está presente. |
Vuelva a ejecutar el comando con un ID válido. |
ORA-00027 |
cannot kill current session |
No se puede matar la sesión actual. |
Utilice otro usuario para matar la sesión. |
ORA-00028 |
your session has been killed |
Otro usuario ha matado su sesión. |
Vuelva a conectarse. |
ORA-00029 |
session... |
Sobre los componentes internos (memoria, sistema)
Código del error |
Mensaje de Oracle |
Causa del error |
Solución |
ORA-00058 |
DB_BLOCK_SIZE must be string to mount this database (not string) |
El valor indicado por el parámetro DB_ BLOCK_SIZE en el arranque de la base de datos no es el que se utilizó en su creación. |
Corrija el parámetro DB_BLOCK_SIZE. |
ORA-00059 |
maximum number of DB_FILES exceeded |
Se ha sobrepasado el número máximo de ficheros físicos (DB_ FILES) de la base de datos. |
Aumente el parámetro DB_FILES y vuelva a iniciar la base de datos. |
ORA-00063 |
maximum number of LOG_FILES exceeded |
Se ha sobrepasado el número máximo de ficheros log. |
Aumente el parámetro LOG_FILES. |
ORA-00065 |
initialization of FIXED_DATE failed |
La variable FIXED_ DATE que es la fecha de sistema Oracle no está en formato fecha (yyyy-mm-dd:hh24:mi:ss). |
Modifique el parámetro y póngalo en el formato correcto y reinicie la base de datos. |
ORA-00483 |
During shutdown a process abnormally terminated |
Al parar la base de datos, un proceso ha acabado con error. |
Compruebe los logs para detectar que proceso es el qué ha acabado con error. |