¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. SQL
  3. Los errores más comunes
Extrait - SQL Fundamentos del lenguaje (con ejercicios corregidos) - (4ª edición)
Extractos del libro
SQL Fundamentos del lenguaje (con ejercicios corregidos) - (4ª edición) Volver a la página de compra del libro

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.