Hogar / Noticias / Características del manejo de errores del servidor de base de datos Oracle. Errores de Oracle: errores de la base de datos, explicación y acción correctiva, variantes de excepción de Oracle

Características del manejo de errores del servidor de base de datos Oracle. Errores de Oracle: errores de la base de datos, explicación y acción correctiva, variantes de excepción de Oracle

Manejo de excepciones en PL/SQL

En cualquier lenguaje procedimental, es fundamental recordar que los programas son una entidad completa y separada de la base de datos. Por lo tanto, siempre que el programa solicite filas de la base de datos, el programador debe asegurarse de que la solicitud se haya completado correctamente.

En las bases de datos relacionales, la base de datos siempre pasará una variable especial llamada SQLCODE a cualquier programa que llame. El SQLCODE devuelto por la llamada de alcance del programa a la base de datos es traducido por Oracle en una variable booleana con nombre (consulte la tabla a continuación).

Variable de excepción PL/SQL

ACCESO_EN_NULO

COLECCIÓN_IS_NULL

CURSOR_ALREADY_OPEN

DUP_VAL_ON_INDEX

ROWTYPE_MISMATCH

SUBSCRIPT_BEYOND_COUNT

SUBSCRIPT_OUTSIDE_LIMIT

SYS_INVALID_ROWID

TIMEOUT_ON_RESOURCE

Por ejemplo, si la base de datos devuelve SQLCODE=100, la variable PL/SQL NO_DATA_FOUND se establecerá en TRUE.

Sin excepción, todos los programas PL/SQL deben cancelarse cada vez que la base de datos de Oracle devuelve un SQLCODE inesperado.

Esto puede tener un efecto desastroso en la base de datos, especialmente cuando PL/SQL carga datos en tablas basándose en premisas falsas. Para evitar esta tragedia, Oracle proporciona una variable CUANDO OTROS, que se establece en VERDADERO si se devuelve algún SQLCODE inesperado de la base de datos de Oracle.

Por ejemplo, considere el siguiente código:

DECLARAR
err_num NÚMERO;
err_msg VARCHAR2(100);
EMPEZAR
...
EXCEPCIÓN
...
CUANDO OTROS ENTONCES
err_num:= CÓDIGOSQL;
err_msg:= SUBSTR(SQLERRM, 1, 100);
INSERTAR EN errores VALORES (err_num, err_msg);
FINAL;

Aquí vemos que nuestro manejo de excepciones tiene un área de EXCEPCIONES que prueba CUANDO OTROS. Si la variable booleana WHEN OTHERS es VERDADERA, el código PL/SQL captura el SQLCODE y el mensaje de error asociado (SQLERRM) y almacena estos valores en una tabla de errores especial de Oracle.

Manejo de excepciones de Oracle

Los desarrolladores a menudo marcan las condiciones de error y las manejan mediante el manejo de excepciones de Oracle y el uso de la lógica IF-THEN.

Manejo de excepciones de Oracle utilizando la lógica IF-THEN para marcar errores

El ejemplo anterior ilustra el manejo de excepciones de Oracle utilizando la variable booleana bAidAmountOk para realizar un seguimiento de una condición a lo largo del procesamiento de cada registro de estudiante.

Este uso del manejo de excepciones de Oracle tiene un impacto en el rendimiento. El manejo de excepciones de Oracle usa múltiples instrucciones para probar la condición de error. Cada instrucción de manejo de excepciones de Oracle requiere ciclos de CPU para completarse. Un enfoque mucho mejor implica el uso del manejo de excepciones de Oracle para evitar desperdiciar ciclos de CPU, como se ve a continuación:

Uso de controladores de excepciones de Oracle para mejorar el rendimiento.

En este ejemplo de manejo de excepciones de Oracle, el xAID_AMOUNT_OK la excepción se genera explícitamente dentro del ciclo. Esto permite que la ejecución omita las instrucciones que ocurren después de verificar el GPA del estudiante, lo que reduce la CPU utilizada en el manejo de excepciones de Oracle.

El manejo de excepciones de Oracle es altamente eficiente en el rendimiento. Cuando se genera una excepción de Oracle, todas las instrucciones posteriores dentro del bloque se omiten para que la excepción pueda ser manejada por un controlador de excepciones de Oracle. El manejo de excepciones de Oracle se puede utilizar para aumentar significativamente el rendimiento.

Burleson es el equipo americano

Nota: Esta documentación de Oracle se creó como una referencia de soporte y capacitación de Oracle para que la utilicen nuestros profesionales de consultoría de ajuste de rendimiento de DBA. No dude en hacer preguntas en nuestro foro de Oracle.

Verificar ¡experiencia! Cualquiera que esté considerando utilizar los servicios de un experto en soporte de Oracle debe investigar de forma independiente sus credenciales y experiencia, y no confiar en los anuncios y la experiencia autoproclamada. Todos los expertos legítimos de Oracle publican sus .

Errata? la optimización del rendimiento


Derechos de autor 1996 - 2017

Todos los derechos reservados por Burleson

® es la marca registrada de Oracle Corporation.

Soporte remoto de emergencia proporcionado por Conversational

En este capítulo, discutiremos las Excepciones en PL/SQL. Una excepción es una condición de error durante la ejecución de un programa. PL/SQL ayuda a los programadores a capturar tales condiciones usando EXCEPCIÓN bloque en el programa y se toma una acción apropiada contra la condición de error. Hay dos tipos de excepciones:

  • Excepciones definidas por el sistema
  • Excepciones definidas por el usuario

Sintaxis para el manejo de excepciones

La sintaxis general para el manejo de excepciones es la siguiente. Aquí puede enumerar tantas excepciones como pueda manejar. La excepción predeterminada se manejará usando CUANDO otros ENTONCES

DECLARAR EMPEZAR EXCEPCIÓN CUANDO excepción1 THEN declaraciones-manejo-excepción CUANDO excepción2 THEN declaraciones-manejo-excepción WHEN excepción3 THEN declaraciones-manejo-excepción ........ WHEN otros THEN declaraciones-manejo-excepción END;

ejemplo

Escribamos un código para ilustrar el concepto. Usaremos la tabla CLIENTES que habíamos creado y usado en los capítulos anteriores:

DECLARAR c_id clientes.id%type:= 8; c_name clienteS.Nombre%tipo; c_addr clientes.dirección%tipo; COMENZAR SELECCIONAR nombre, dirección EN c_name, c_addr DESDE clientes DONDE id = c_id; DBMS_OUTPUT.PUT_LINE("Nombre: "|| c_name); DBMS_OUTPUT.PUT_LINE("Dirección: " || c_addr); EXCEPCIÓN CUANDO no_data_found ENTONCES dbms_output.put_line("¡No hay tal cliente!"); CUANDO otros ENTONCES dbms_output.put_line("¡Error!"); FINAL; /

No hay tal cliente! Procedimiento PL/SQL completado con éxito.

El programa anterior muestra el nombre y la dirección de un cliente cuya identificación se proporciona. Dado que no hay ningún cliente con valor de ID 8 en nuestra base de datos, el programa genera la excepción de tiempo de ejecución DATOS NO ENCONTRADOS, que se captura en el bloque EXCEPCIÓN.

Generar excepciones

El servidor de la base de datos genera excepciones automáticamente cada vez que hay un error interno en la base de datos, pero el programador puede generar excepciones explícitamente mediante el comando ELEVAR. La siguiente es la sintaxis simple para generar una excepción:

DECLARAR EXCEPCIÓN nombre_excepción; COMENZAR SI condición ENTONCES AUMENTAR nombre_excepción; TERMINARA SI; EXCEPCIÓN CUANDO nombre_excepción ENTONCES instrucción; FINAL;

Puede usar la sintaxis anterior para generar la excepción estándar de Oracle o cualquier excepción definida por el usuario. En la siguiente sección, le daremos un ejemplo sobre cómo generar una excepción definida por el usuario. Puede generar las excepciones estándar de Oracle de manera similar.

Excepciones definidas por el usuario

PL/SQL le permite definir sus propias excepciones según la necesidad de su programa. Una excepción definida por el usuario debe declararse y luego generarse explícitamente, utilizando una instrucción RAISE o el procedimiento DBMS_STANDARD.RAISE_APPLICATION_ERROR.

La sintaxis para declarar una excepción es:

DECLARAR mi-excepción EXCEPCIÓN;

ejemplo

El siguiente ejemplo ilustra el concepto. Este programa solicita una identificación de cliente, cuando el usuario ingresa una identificación no válida, la excepción identificación invalida es elevado.

DECLARAR c_id clientes.id%type:= &cc_id; c_name clienteS.Nombre%tipo; c_addr clientes.dirección%tipo; -- excepción definida por el usuario ex_invalid_id EXCEPCIÓN; COMENZAR SI c_id<= 0 THEN RAISE ex_invalid_id; ELSE SELECT name, address INTO c_name, c_addr FROM customers WHERE id = c_id; DBMS_OUTPUT.PUT_LINE ("Name: "|| c_name); DBMS_OUTPUT.PUT_LINE ("Address: " || c_addr); END IF; EXCEPTION WHEN ex_invalid_id THEN dbms_output.put_line("ID must be greater than zero!"); WHEN no_data_found THEN dbms_output.put_line("No such customer!"); WHEN others THEN dbms_output.put_line("Error!"); END; /

Cuando el código anterior se ejecuta en el símbolo del sistema SQL, produce el siguiente resultado:

Ingrese el valor para cc_id: -6 (ingrese un valor -6) antiguo 2: c_id clientes.id%tipo:= &cc_id; nuevo 2: c_id clientes.id%tipo:= -6; el ID debe ser mayor que cero !Procedimiento PL/SQL completado con éxito.

Excepciones predefinidas

PL/SQL proporciona muchas excepciones predefinidas, que se ejecutan cuando un programa viola cualquier regla de la base de datos. Por ejemplo, la excepción predefinida NO_DATA_FOUND se genera cuando una declaración SELECT INTO no devuelve filas. La siguiente tabla enumera algunas de las importantes excepciones predefinidas:

Excepción Error de oráculo SQLCODE Descripción
ACCESO_EN_NULO 06530 -6530 Se genera cuando a un objeto nulo se le asigna automáticamente un valor.
CASO_NO_ENCONTRADO 06592 -6592 Se genera cuando no se selecciona ninguna de las opciones en la cláusula WHEN de una instrucción CASE y no hay una cláusula ELSE.
COLECCIÓN_IS_NULL 06531 -6531 Se genera cuando un programa intenta aplicar métodos de recopilación distintos de EXISTS a una tabla anidada o varray sin inicializar, o el programa intenta asignar valores a los elementos de una tabla anidada o varray sin inicializar.
DUP_VAL_ON_INDEX 00001 -1 Se genera cuando se intenta almacenar valores duplicados en una columna con índice único.
INVALID_CURSOR 01001 -1001 Se genera cuando se intenta realizar una operación de cursor que no está permitida, como cerrar un cursor sin abrir.
NÚMERO INVALIDO 01722 -1722 Se genera cuando falla la conversión de una cadena de caracteres en un número porque la cadena no representa un número válido.
LOGIN_DENIED 01017 -1017 Se genera cuando un programa intenta iniciar sesión en la base de datos con un nombre de usuario o contraseña no válidos.
DATOS NO ENCONTRADOS 01403 +100 Se genera cuando una declaración SELECT INTO no devuelve filas.
NOT_LOGGED_ON 01012 -1012 Se genera cuando se emite una llamada a la base de datos sin estar conectado a la base de datos.
PROGRAMA_ERROR 06501 -6501 Se genera cuando PL/SQL tiene un problema interno.
ROWTYPE_MISMATCH 06504 -6504 Se genera cuando un cursor obtiene valor en una variable que tiene un tipo de datos incompatible.
SELF_IS_NULL 30625 -30625 Se genera cuando se invoca un método miembro, pero la instancia del tipo de objeto no se inicializó.
ALMACENAMIENTO_ERROR 06500 -6500 Se genera cuando PL/SQL se quedó sin memoria o la memoria se corrompió.
TOO_MANY_ROWS 01422 -1422 Se genera cuando una declaración SELECT INTO devuelve más de una fila.
VALOR_ERROR 06502 -6502 Se genera cuando se produce un error de aritmética, conversión, truncamiento o restricción de tamaño.
ZERO_DIVIDE 01476 1476 Se eleva cuando se intenta dividir un número por cero.

Doctor. Vladimir Likhachev, Universidad Pedagógica de Kaluga que lleva el nombre de KE Tsiolkovsky

Para los programas que trabajan con bases de datos, es importante no solo manejar correctamente sus errores, sino también generar mensajes informativos sobre estos errores. La presencia de tales mensajes le permite identificar rápidamente las causas y corregir errores. Esto es especialmente cierto cuando se trabaja con el programa del usuario final, ya que en la mayoría de los casos no solo conoce la estructura de una base de datos en particular, sino también los fundamentos teóricos de las bases de datos relacionales.

Por extraño que parezca, la situación con la formación de mensajes de error en los programas es a menudo muy diferente del procesamiento de los errores en sí. Cuando se manejan errores, generalmente es posible desarrollar una estrategia común, lo que le permite localizar su procesamiento en una o más funciones. Se puede implementar un enfoque similar para los mensajes de error sobre la base de que en el mensaje de error el servidor de Oracle indica el tipo de error y el objeto de la base de datos que lo causó. Dichos objetos suelen ser restricciones, como claves primarias, únicas y externas, índices únicos, restricciones "no nulas", etc. Se puede obtener información detallada sobre estas restricciones de las tablas del sistema y las vistas de la base de datos y los valores que se pueden cambiar. y cambiado se puede determinar condujo a un error. Pero el problema es que la implementación de dicho mecanismo para generar mensajes de error en aplicaciones reales encuentra una serie de dificultades:

  • La dependencia del mensaje de error en el propósito del programa. Incluso para programas que trabajan con la misma base de datos, puede ser necesario generar diferentes mensajes sobre el mismo error. Por ejemplo, en un programa para editar datos de usuario, el mensaje debería ser: "¡Ya está registrado un producto con este nombre! ¡Revise el nombre del producto!". Pero en el programa de importación de datos, se requiere un mensaje con un contenido completamente diferente: "Los datos importados están duplicados: ¡verifique la fecha para la que se importan los datos!".
  • Dificultad para generar mensajes para algunos errores causados ​​por limitaciones de la base de datos. Por ejemplo, las restricciones CHECK en las tablas pueden usar consultas y condiciones bastante complejas. Por lo tanto, la formación de mensajes basados ​​en su análisis puede ser una tarea bastante difícil.
  • Usar nombres personalizados de tablas y columnas en programas cliente que sean diferentes de sus nombres en la base de datos. Por ejemplo, la tabla tiene el nombre "BIENES", y en la aplicación cliente, los datos de esta tabla se pueden mostrar en el directorio como "Productos" o "Productos".

La combinación de estos factores generalmente conduce al hecho de que la formación de mensajes, incluso sobre el mismo tipo de errores, se implementa individualmente para cada transacción. Como resultado, el código para generar mensajes de error se distribuye por toda la aplicación, lo que complica su mantenimiento. Debido a la necesidad de escribir código para casi todos los errores posibles, algunos de los errores de los que el desarrollador es consciente resultan no tener mensajes correspondientes para el usuario. Como resultado, se forman mensajes suficientemente informativos para el usuario final solo para algunos de los errores, en otros casos, tiene que contentarse, en el mejor de los casos, con mensajes del propio servidor de la base de datos. La información de tales mensajes para el usuario promedio en la mayoría de los casos es insuficiente para identificar la causa del problema y eliminarlo.

El método de generación de mensajes de error informativos para el usuario considerado en el artículo es bastante universal, se puede implementar tanto en aplicaciones cliente como en el lado del servidor Oracle. Se puede utilizar en varios tipos de programas, tales como:

  • Programas que usan una interfaz especial para ingresar y modificar datos de la base de datos. En la mayoría de los casos, los mensajes de error informativos se pueden obtener a partir de un análisis de la estructura de la base de datos. Esto informará al usuario sobre su causa con un mínimo esfuerzo por parte de los desarrolladores y el software.
  • Programas con la capacidad de generar consultas SQL arbitrarias por parte del usuario. La formación de mensajes basados ​​en el análisis de la estructura de la base de datos puede ser especialmente relevante para programas que están dirigidos a una amplia gama de usuarios, incluidos aquellos con un bajo nivel de conocimiento en esta área. Esto hará que los mensajes de error en las consultas SQL sean más comprensibles para el usuario.
  • plataformas temáticas. El uso de los métodos descritos en el artículo permitirá que la plataforma en cuestión genere mensajes de error informativos de la base de datos basados ​​en el análisis de su estructura. Esto permitirá acortar el código de lenguaje de la plataforma utilizado para manejar situaciones de error. Y los errores que requieren mensajes especiales, pero que resultaron no tenerlos, serán lo suficientemente informativos como para que sea mucho más fácil identificar su causa.

Los problemas de formación de mensajes descritos anteriormente se pueden resolver si los mensajes de error se dividen convencionalmente en dos grupos:

  • mensajes universales que se forman en base al análisis de la estructura de la base de datos;
  • mensajes especiales que se definen individualmente para cada error.

El método de generación de mensajes de error de base de datos descrito en el artículo se puede aplicar a muchos servidores de bases de datos relacionales. En el artículo se analiza un ejemplo de su uso para las bases de datos del servidor Firebird. Si la aplicación cliente se desarrolla en Object Pascal (Delphi, Kylix, Free Pascal), las capacidades de la biblioteca JEDI pueden ser útiles para identificar las causas de errores inesperados.

1. Mensajes de error universales causados ​​por restricciones de la base de datos

Como se mencionó anteriormente, la idea principal de crear mensajes universales es formar un mensaje que sea lo suficientemente informativo y comprensible para el usuario final en función de los datos del mensaje de error de Oracle y la estructura de la base de datos. Supongamos que en la tabla "BIENES" (script 1.1) el usuario intenta agregar un producto con un nombre (columna "TÍTULO"), que ya está en la tabla.

CREAR TABLA DEMO. BIENES (CÓDIGO ENTERO NO NULO, TÍTULO VARCHAR2 (50 bytes) NO NULO, NÚMERO DE PRECIO (16, 2) NO NULO, RESTRICCIÓN CK_PRICE CHECK (PRECIO > 0), RESTRICCIÓN PK_BIENES CLAVE PRINCIPAL (CÓDIGO)); COMMENT ON TABLE DEMO.GOODS es "Bienes"; COMMENT ON COLUMN DEMO.GOODS.CODE es "Código de producto"; COMMENT ON COLUMN DEMO.GOODS.TITLE es "Título"; COMMENT ON COLUMN DEMO.GOODS.PRICE es "Precio"; CREAR ÍNDICE ÚNICO DEMO.IDX_GOODS_TITLE EN DEMO.GOODS(TITLE);

Guión 1.1. Creación de la tabla "BIENES".

El servidor generará un error en este caso, porque la columna "TÍTULO", que almacena el nombre del producto, está incluida en el índice único "DEMO.IDX_GOODS_TITLE":

En su lugar, se puede formar un mensaje para el usuario, por ejemplo, uno de los mensajes:

  • ¡El valor del campo "Nombre" en la tabla "Productos" debe ser único!
  • ¡Ya hay un producto registrado con este nombre! ¡Compruebe el nombre del producto!
  • ¡Los productos con el mismo nombre no pueden estar en el directorio de productos!

Aunque estos mensajes difieren, todos indican información sobre el objeto para el que se viola la restricción de unicidad: este es el campo "Nombre" de la tabla "Productos".

Uno de los problemas con la generación de este tipo de mensaje es que los nombres de tablas y campos personalizados son diferentes de los nombres de tablas y columnas en la base de datos. Para que el usuario entienda el mensaje de error, debe usar nombres personalizados. Se puede usar una tabla separada o comentarios para tablas y columnas para hacer coincidir los nombres de tablas y campos y sus nombres personalizados. La última opción puede considerarse más preferible, ya que le permite documentar la base de datos al mismo tiempo. Por eso, en el script 1.1, los nombres definidos por el usuario se dan como comentarios para la tabla y sus columnas. Si comparamos los mensajes y comentarios anteriores para la tabla y las columnas, podemos ver que la formación del primer mensaje es la opción más sencilla. Para formar los otros dos mensajes, puede ser necesaria la síntesis léxica, pero esta es una tarea separada. Me gustaría llamar su atención sobre el hecho de que en el futuro en el artículo solo se proporciona una de las posibles opciones de mensaje para cada caso de error. En la práctica, la elección del estilo y contenido del mensaje puede depender de varios factores y será determinada por el diseñador del sistema.

Por supuesto, no se puede descartar que no haya comentarios para una tabla o columna que deba incluirse en el mensaje. En esta situación, el mensaje de error puede mostrar directamente el nombre de la tabla o columna.

2. No se especifica el valor del campo requerido (restricción NOT NULL)

Este error lo genera el servidor en varios casos:

  • se violó la restricción "no nula" en la columna;
  • no se especificó ningún valor para una columna que forma parte de un índice único, clave maestra o clave única.

En todos estos casos, el servidor genera un error:

Para obtener la descripción de la tabla y la columna del mensaje de error, se puede utilizar la consulta 2.1.

seleccione tc.comments como table_comment, cc.comments como column_comment de all_tab_columns c, all_tab_comments tc, all_col_comments cc c.propietario y cc.table_name = c.table_name and cc.column_name = c.column_name

Solicitud 2.1. Obtener una descripción de tabla y columna

Como parámetros de consulta "propietario", "nombre_tabla", "nombre_columna" debe especificar el nombre del esquema, la tabla y la columna del mensaje de error, respectivamente. La consulta devuelve los comentarios de la tabla y la columna.

Usando los resultados de esta consulta, se puede generar un mensaje de error, por ejemplo, el siguiente contenido:

Debe especificar el valor de la columna "<Описание поля>"en la mesa"<Описание таблицы>" a<добавлении новой/изменении>registros.

3. Se rompe la unicidad del valor de un campo o un conjunto de columnas

La necesidad de ingresar un valor único para una columna puede ser requerida principalmente en tres casos:

  • la columna es parte de la clave maestra;
  • la columna está incluida en la clave única;
  • la columna está incluida en un índice único.

En los tres casos, Oracle Database genera el mismo error:
ORA-00001: restricción única violada (<Схема>.<Ограничение>)

El mensaje de error especifica la restricción que provocó el error. Para obtener información sobre las columnas incluidas en las claves principales o únicas, puede utilizar la consulta 3.1, para obtener información sobre el índice - consulta 3.2.

seleccione dcs.constraint_type, cc.table_name, tc.comments como table_comment, cc.column_name, ccom.comments como column_comment de all_cons_columns cc join all_tab_comments tc on (tc.propietario = cc.propietario and tc.table_name = cc.table_name) join all_col_comments ccom on (ccom.propietario = cc.propietario and ccom.table_name = cc.table_name and ccom.column_name = cc. column_name) únase a all_constraints dcs en (dcs.constraint_name = cc.restricción_name) donde cc.propietario = :propietario y cc.restricción_nombre = :key_name
Solicitud 3.1. Obtención de información sobre las columnas de la tabla incluidas en las claves principales o únicas.
seleccione ic.table_name, tc.comments como table_comment, ic.column_name, ccom.comments como column_comment de all_ind_columns ic join all_tab_comments tc on (tc.owner = ic.table_owner and tc.table_name = ic.table_name) join all_col_comments ccom on (ccom.owner = ic.table_owner and ccom.table_name = ic.table_name and ccom.column_name = ic. nombre_columna) donde propietario_tabla = :propietario y nombre_índice = :nombre_índice
Solicitud 3.2. Obtener información sobre las columnas de la tabla incluidas en el índice.

Los parámetros de consulta son el nombre del esquema ("propietario"), el nombre de la clave ("key_name") o el nombre del índice ("index_name"). Las consultas devuelven los nombres y comentarios de las tablas y columnas de la restricción. La consulta 3.1 también devuelve el tipo de restricción ("constraint_type"): "P" - clave maestra, "U" - clave única. El número de registros devueltos por las consultas coincide con el número de columnas en la restricción única.

En base a la información recibida sobre la restricción de unicidad para el usuario, se pueden generar variantes de mensajes de error, por ejemplo, los dados en la sección 1.

4. Errores causados ​​por restricciones de clave externa

Al realizar operaciones en datos tabulares asociados con claves foráneas, existen varias razones que conducen a errores:

1. Se agrega un registro a la tabla subordinada, en el cual la columna incluida en la clave foránea no tiene un valor correspondiente en la tabla principal. Una situación similar ocurre al cambiar el valor de una columna de una tabla subordinada si el valor de la nueva columna no está en la tabla principal. Oracle Database en este caso genera un error:

  1. Se intenta cambiar el valor de una columna en la tabla principal a la que se hace referencia en la tabla secundaria. Para este caso Oracle Database genera un error:
  1. Se intenta eliminar datos en la tabla maestra a la que se hace referencia en la tabla secundaria. Si se especifica una restricción "SIN ACCIÓN" en la definición de una relación entre tablas para una operación de eliminación de datos, Oracle no permite eliminar datos de la tabla maestra si la tabla secundaria tiene registros asociados con el registro que se está eliminando. Para esta situación Oracle Database genera un error similar al caso anterior.

Puede usar la consulta 4.1 a continuación para obtener información sobre las columnas de las tablas principal y secundaria que forman parte de la clave externa.

seleccione a.nombre_restricción, a.nombre_tabla, tc1.comentarios como comentario_tabla, a2.nombre_columna, cc1.comentarios como comentario_columna, b.propietario como r_propietario, b.nombre_tabla como r_nombre_tabla, tc2.comentarios como r_comentario_tabla, b2.nombre_columna como r_nombre_columna, cc2 .comentarios como r_column_comment de all_constraints a, all_constraints b, all_cons_columns a2, all_cons_columns b2, all_tab_comments tc1, all_col_comments cc1, all_tab_comments tc2, all_col_comments cc2 donde a.propietario = :propietario y a.tipo_de_restricción = "R" y a.nombre_de_restricción = :clave_foránea y en b.tipo_de_restricción ("P","U") y b.nombre_restricción = a.r_nombre_restricción y b.propietario = a.r_propietario y a2.nombre_restricción = a.nombre_restricción y a2.nombre_tabla = a.nombre_tabla y a2.propietario = a.propietario y b2.nombre_restricción = b.nombre_restricción y b2.nombre_tabla = b.nombre_tabla y b2.propietario = b.propietario y b2.posición = a2.posición y tc1.propietario = a.propietario y tc1.nombre_tabla = a.nombre_tabla y cc1. propietario = a2.propietario y cc1.nombre_tabla = a2.nombre_tabla y cc1.nombre_columna = a2.nombre_columna y tc2.propietario = b.propietario y tc2.nombre_tabla = b.nombre_tabla y cc2.propietario = b2.propietario y cc2.nombre_tabla = b2.nombre_tabla y cc2.nombre_columna = b2.nombre_columna
Solicitud 4.1. Obtener información sobre una clave externa.

La solicitud tiene dos parámetros: "propietario" y "foreign_key": esquema y clave externa, sobre los que desea obtener información. Devuelve información sobre las columnas incluidas en la clave externa: "table_name", "table_comment": el nombre y la descripción de la tabla subordinada; "column_name", "column_comment": el nombre y la descripción de la columna de la tabla subordinada. Las columnas de consulta con el prefijo "r_" devuelven información sobre la tabla principal. El número de registros devueltos por la consulta corresponde al número de columnas incluidas en la clave externa.

Según esta información, se pueden generar mensajes de error de clave externa para el usuario.

5. Mensajes de error especiales causados ​​por restricciones de la base de datos

Puede surgir la necesidad de usar mensajes especiales si el mensaje de error universal por alguna razón no se puede usar o no se puede generar. Un ejemplo del último caso son las restricciones CHECK en las tablas. En condiciones restringidas, se pueden utilizar consultas y condiciones, cuyo análisis puede ser una tarea bastante difícil. Por lo tanto, para estas restricciones, a menudo es más conveniente usar mensajes que se definen en tiempo de diseño.

Se pueden distinguir dos grupos de mensajes de error especiales. El primer tipo de mensajes especiales está diseñado para usarse en todas las aplicaciones que trabajan con una base de datos común. Pueden denominarse vagamente "mensajes de error especiales a nivel de base de datos". El segundo grupo de mensajes es específico de la aplicación. Pueden ser necesarios cuando diferentes aplicaciones necesitan dar al usuario diferentes mensajes sobre el mismo error. Pueden llamarse tentativamente "mensajes de error especiales a nivel de aplicación". Es conveniente almacenar información sobre el primer grupo de mensajes en la propia base de datos y usar una tabla separada para esto. Los mensajes específicos de un programa se pueden almacenar en sus recursos, por ejemplo, como un archivo separado o también en una base de datos. Los mensajes especiales se pueden identificar según el código de error, el nombre del esquema y una o más palabras clave del mensaje de error.

6. Mensajes de error de restricción CHECK para tablas

Cuando ocurre un error debido a una restricción CHECK en una tabla, el servidor genera un error:
ORA-02290: se violó la restricción de integridad CHECK (<Схема>.<Имя ограничения>)

Como se mencionó anteriormente, a menudo es conveniente usar mensajes especiales para tales errores. Por ejemplo, la restricción "CK_PRICE" en la tabla "GOODS" puede usar un mensaje personalizado almacenado en la tabla de mensajes personalizados:

7. Uso completo de mensajes de error personalizados y genéricos

Un mecanismo flexible para generar mensajes de error informativos para el usuario se implementa en varias etapas (Fig. 1):

1. Muestra un mensaje de error de nivel de aplicación personalizado. El programa primero busca un mensaje de error entre los mensajes específicos para esa aplicación. Si se encuentra dicho mensaje, se visualiza y se completa la formación del mensaje.

2. Muestra un mensaje de error especial en el nivel de la base de datos. Si no se encuentra ningún mensaje en el paso 1, se busca un mensaje de error especial a nivel de la base de datos. Si se encuentra, se muestra al usuario y la generación del mensaje de error termina allí.

3. Visualización de un mensaje basado en el análisis de la estructura de la base de datos (mensaje universal). Si no se encontraron mensajes especiales en las etapas anteriores, entonces se forma en base al análisis de la estructura de la base de datos. Se muestra al usuario y esto completa la formación del mensaje.

4. Visualización de un mensaje del servidor de la base de datos. Si no se generó ningún mensaje para el usuario en los tres pasos anteriores, se muestra un mensaje de error de Oracle. Esta situación puede darse por varias razones. Por ejemplo, cuando se produce un error personalizado que se generó de forma intencionada en un procedimiento almacenado o desencadenador mediante la función RAISE_APPLICATION_ERROR, y no es necesario cambiar el contenido del mensaje.

Son posibles casos más complejos que el dado en este artículo. Por ejemplo, si el mensaje se genera en un procedimiento almacenado, que a su vez se puede llamar desde un activador u otro procedimiento almacenado. En este caso, es posible que también necesite información sobre cómo se llamó al procedimiento que generó el mensaje de error. Y, por lo tanto, el mensaje original se puede complementar o cambiar, por ejemplo, en función de la información sobre la pila de llamadas de procedimientos almacenados y disparadores.

En algunos casos, dichos mensajes pueden ser incluso más informativos que los generados en las etapas anteriores. Por ejemplo, en lugar de la restricción CK_PRICE para la tabla DEMO.GOODS (script 1.1), puede realizar la verificación necesaria en el activador antes de insertar y actualizar el registro y generar un mensaje para el usuario en un formulario ya "listo":

Si el precio de un producto es menor o igual a cero, el servidor generará un error, por ejemplo:

La aplicación cliente puede enviar inmediatamente este mensaje al usuario sin modificaciones.

Otro motivo puede ser la aparición de un error para el que no se prevé la formación de un mensaje.

Arroz. 1. La secuencia de generación de un mensaje de error de base de datos.

Me gustaría señalar que incluso si la aplicación usa solo mensajes de error especiales, el uso de una función común para generar mensajes mejorará la estructura del programa. Si es necesario, el formato de los mensajes especiales puede admitir enlaces al sistema de ayuda, imágenes, etc. El método descrito para generar mensajes de error de la base de datos se centra más en la implementación en la aplicación cliente. Al mismo tiempo, se puede utilizar en el lado del servidor en procedimientos almacenados, disparadores de tablas, así como en disparadores de sistema para el evento SERVERERROR de base de datos o esquema.

Conclusión

El propósito de este artículo es mostrar las ideas principales de un método que se puede utilizar para generar mensajes de error informativos de la base de datos de Oracle para el usuario final. Aunque algunos puntos de implementación quedaron fuera del alcance del artículo, me gustaría esperar que el enfoque descrito en el artículo reduzca los costos de mano de obra en el desarrollo de software, mejore su confiabilidad y calidad.

Cuando ocurren excepciones, es importante emitir mensajes de error fáciles de usar. Las excepciones ya se han mencionado en la sección sobre bloques básicos de PL/SQL. Ahora es el momento de considerarlos con más detalle.

Excepciones

Una excepción es una condición de error que se activa, o entusiasmado - cuando se produce un problema. Hay muchas excepciones diferentes, cada una asociada con un tipo específico de problema. Cuando ocurre una excepción, la ejecución del código se detiene en la instrucción que generó la excepción y el control se transfiere a la parte del bloque que maneja la excepción. Si el bloque no contiene una sección ejecutable, PL/SQL intenta encontrar una sección ejecutable en incluido unidad base (bloque básico envolvente), i.e. en un bloque que es externo al código que lanzó la excepción. Si no hay un controlador para esta excepción en el bloque inmediato, la búsqueda continúa en los bloques de los siguientes niveles hasta que se encuentra un controlador adecuado y, si no se encuentra, la ejecución del programa se detiene con un mensaje de error no controlado.

La parte de manejo de excepciones del bloque es el lugar ideal para emitir mensajes de error informativos y ejecutar limpieza (limpieza), que le permite deshacerse de todo lo que podría causar confusión o problemas en el futuro. Si se lanzó una excepción durante la ejecución de un procedimiento que insertó una fila en una tabla, un procedimiento de limpieza típico podría incluir una instrucción ROLLBACK.

Una vez que el control se ha transferido a un controlador de excepciones, ya no se devuelve a la instrucción que provocó la excepción. En su lugar, el control se transfiere a la declaración del bloque base adjunto inmediatamente después del bloque anidado o la llamada a la función/procedimiento.

Excepciones del sistema

Ya está familiarizado con la excepción ZERO_DIVIDE predefinida en PL/SQL. Hay bastantes otras excepciones del sistema que son reconocidas y lanzadas por PL/SQL u Oracle. La Tabla 1 proporciona una lista más completa de excepciones del sistema.

En PL/SQL, puede proporcionar información de error a los usuarios de dos formas. La primera forma es usar el comando SQLCODE, que devuelve un código de error. Este código es un número negativo, generalmente igual al número del error ORA que se imprime cuando la aplicación termina si la excepción no se maneja. La segunda forma es devolver un mensaje de texto que describa el error. No en vano, el comando correspondiente se llama SQLERRM. Tanto SQLCODE como SQLERRM se pueden usar en un controlador de excepciones. Nota: No todas las excepciones del sistema tienen nombres.

Mesa1 . Excepciones del sistema

excepción del sistema,código de error

Motivo de la excitación

CURSOR_ YA_ ABIERTO

ora-06511

Intentando abrir un cursor ya abierto

DUP_VAL_ON_INDEX

ORA-00001

Intentar insertar un valor duplicado en una columna que tiene un índice único y, por lo tanto, una restricción única

INVÁLIDO_ CURSOR

ORA-01001

Intentar recuperar un cursor sin abrir o intentar cerrar un cursor que no se ha abierto

DATOS NO ENCONTRADOS

ORA-01403

Intentar SELECCIONAR EN cuando SELECCIONAR devuelve cero filas (y otras razones que están más allá del alcance de este libro)

PROGRAMA_ ERROR

ORA-06501

Error interno. Por lo general, significa que debe ponerse en contacto con el soporte de Oracle

ALMACENAMIENTO_ ERROR

ORA-06500

El programa no tiene suficiente memoria del sistema

TIMEOUT_ON_RESOURCE

ORA-00051

El programa esperó demasiado a que algún recurso estuviera disponible

TOO_MANY_ROWS

ORA-01422

SELECT INTO en PL/SQL devolvió más de una fila

VALOR_ ERROR

ORA-06502

PL/SOL encontró una conversión o truncamiento de datos no válidos, o una restricción de datos no válidos

CERO_ DIVIDIR

ORA-01476

Intenta dividir por cero

Todas las demás excepciones y errores internos que no están cubiertos por las excepciones definidas en el bloque base. Se usa cuando no sabe exactamente qué excepción con nombre manejar y desea manejar cualquier excepción que se genere.

Ahora regresemos al primer ejemplo de este capítulo y usemos SQLCODE y SQLERRM en él. A continuación se muestra el código fuente del ejemplo y los resultados de su lanzamiento (Fig. 1).

Num_a NUMERO:= 6;

Num_b NÚMERO;

Núm_b:= 0;

Num_a:= Num_a / Num_b;

Núm_b:= 7;

dbms_output.put_line(" Valor de Num_b "|| Num_b);

EXCEPCIÓN

CUANDO ZERO_DIVIDE ENTONCES

err_num NÚMERO:= CÓDIGOSQL;

err_msg VARCHAR2(512) := SQLERRM;

dbms_output.put_line("Número de error ORA" || err_num);

dbms_output.put_line("Mensaje de error ORA" || err_msg);

dbms_output.put_line("Valor de Num_a " || Num_a);

dbms_output.put_line("Valor de Num_b " || Num_b);

SQL> establecer la salida del servidor en

SQL> DECLARAR

2 num_a NUMERO:= 6;

3 num_b NUMERO;

4 COMIENZA

5 núm_b:= 0;

6 num_a:= num_a / num_b;

7 núm_b:= 7;

8 dbms_output.put_line(" Valor de num_b "|| num_b);

9 EXCEPCIÓN

10 CUANDO ZERO_DIVIDE

11 ENTONCES

13 err_num NÚMERO:= CÓDIGOSQL;

14 err_msg VARCHAR2(512) := SQLERRM;

15 COMENZAR

16 dbms_output.put_line("Número de error ORA"|| err_num);

17 dbms_output.put_line("Mensaje de error ORA" || err_msg);

18 dbms_output.put_line("Valor de num_a " || num_a);

19 dbms_output.put_line("Valor de num_b " || num_b);

20FIN;

21FIN;

Número de error ORA -1476

Mensaje de error de ORA ORA-01476: el divisor es igual a cero

Valor de num_a 6

Valor de num_b 0

Procedimiento PL/SQL completado con éxito.

Arroz. una. Uso de SQLCODE y SQLERRM al manejar excepciones del sistema

Los administradores y programadores de la base de datos de Oracle a veces se enfrentan en su trabajo a que la base de datos comienza a "maldecir" y, a menudo, en un lenguaje que no es del todo claro. En este artículo, veremos el lenguaje de errores de Oracle y los mensajes de advertencia. Todos los errores se agrupan en grandes secciones y subsecciones para ayudar a los usuarios a navegar rápidamente por lo que está sucediendo y tomar medidas para corregir la situación. En este artículo, veremos los grupos. primeros mil errores de Oracle(por rangos codigos del 0 al 999), así como explicar los motivos de su aparición con una propuesta de acciones para corregirlos. El formato del error es "ORA-xxxxx". Al principio viene el prefijo "ORA", y luego a través del guión un código de error de cinco dígitos.

Grupos de errores de Oracle

Mensajes de error ORA-00000 - ORA-00099

Los mensajes ORA-00000 son normales, se completaron con éxito, es decir, no son un error.

Errores metodológicos de acceso al kernel 0001-0049

  • ORA-00001: clave duplicada en índice
  • ORA-00017: número máximo de llamadas excedido
  • ORA-00018: número máximo de sesiones excedido
  • ORA-00019: número de sesiones excedido número de licencias
  • ORA-00020: número máximo de procesos (num) excedido
  • La sesión ORA-00021 está en uso por otro proceso. No cambiar de sesión
  • ORA-00022: ID de sesión no válida. Acceso denegado
  • ORA-00023: La sesión contiene referencias de memoria privada. No puedo desconectar la sesión
  • ORA-00024: conexión a más de un proceso prohibido en modo de usuario único
  • ORA-00025: no se puede colocar [cadena]
  • ORA-00026: ID de sesión faltante o no válido
  • ORA-00027: no se puede destruir la sesión actual
  • ORA-00028: tu sesión ha sido destruida
  • ORA-00029: la sesión no es una sesión de usuario
  • ORA-00030: la sesión de usuario con el ID especificado no existe
  • ORA-00031: sesión marcada para destrucción
  • ORA-00032: contraseña de movimiento de sesión no válida
  • ORA-00033: sesión actual con contraseña de movimiento vacía
  • ORA-00034: no se puede COMMIT o ROLLBACK en la sesión actual de PL/SQL
  • ORA-00035: El valor de LICENSE_MAX_USERS no puede ser inferior al número actual de usuarios
  • ORA-00036: número máximo de niveles (valor) de recursividad de SQL alcanzado
  • ORA-00037: no se puede cambiar la sesión a otro grupo de servidores
  • ORA-00038: No se puede crear la sesión. El grupo de servidores es propiedad de otro usuario.

Errores ENQ 0050-0080

  • ORA-00050: error del sistema operativo al obtener la cola
  • ORA-00051: recurso agotado
  • ORA-00052: número máximo de recursos devueltos excedido
  • ORA-00053: número máximo de colas excedido
  • ORA-00054: recurso ocupado accediendo al puntero NOWAIT
  • ORA-00055: se superó el número máximo de bloqueos DML
  • ORA-00056: Se coloca un bloqueo DDL en un objeto bloqueado
  • ORA-00057: se superó el número máximo de bloqueos de tablas temporales
  • ORA-00058: DB_BLOCK_SIZE debe ser igual a la base de datos que se está montando
  • ORA-00059: Valor del parámetro DB_FILES excedido
  • ORA-00060: se produjo un interbloqueo mientras se esperaba un recurso
  • ORA-00061: una instancia diferente tiene una configuración DML_LOCK diferente
  • ORA-00062: No se puede adquirir el bloqueo DML en toda la tabla. La configuración de DML_LOCKS es nula
  • ORA-00063: Se excedió el valor del parámetro LOG_FILES
  • ORA-00064: no se puede colocar el objeto, es demasiado grande para el sistema operativo
  • ORA-00065: error al inicializar el parámetro FIXED_DATE
  • ORA-00066: Los valores de LOG_FILES no coinciden
  • ORA-00067: valor no válido para el parámetro de cadena, debe ser una cadena
  • ORA-00068: valor no válido para el parámetro de cadena, debe ser una cadena
  • ORA-00069: no se puede bloquear la tabla: bloqueo denegado en [cadena]
  • ORA-00070: comando [cadena] no válido
  • ORA-00071: número de procesos debe ser mayor a 1:
  • ORA-00072: El proceso especificado no está activo
  • ORA-00073: número no válido de argumentos especificados para el comando
  • ORA-00074: ningún proceso definido
  • ORA-00075: proceso [cadena] no encontrado en la instancia actual
  • ORA-00076: volcado [cadena] no encontrado
  • ORA-00077: El volcado especificado no es válido
  • ORA-00078: no se puede resolver el volcado por nombre
  • ORA-00079: variable [valor] no encontrada
  • ORA-00080: se intentó volcar un área de memoria no válida
  • ORA-00081: el rango especificado no es válido
  • ORA-00082: rango de memoria no en el rango especificado
  • ORA-00083: SGA posiblemente dañado
  • ORA-00084: El área global debe ser PGA, SGA o UGA
  • ORA-00085: llamada actual no existe
  • ORA-00086: Llamada de usuario no existe
  • ORA-00087: el comando no se puede ejecutar en una instancia remota
  • ORA-00088: el servidor compartido no puede ejecutar el comando
  • ORA-00089: número de instancia no válido en el comando ORADEBUG
  • ORA-00090: El comando ORADEBUG no pudo asignar correctamente la memoria en una base de datos en clúster
  • ORA-00091: se debe especificar LARGE_POOL_SIZE
  • ORA-00092: LARGE_POOL_SIZE debe ser mayor que LARGE_POOL_MIN_ALLOC
  • ORA-00093: %s especificado incorrectamente
  • ORA-00094: %s debe contener un valor entero
  • ORA-00096: valor no válido [valor] para el parámetro [valor], debe estar dentro del rango
  • ORA-00097: funciones de Oracle SQL no admitidas por SQL92:
  • ORA-00099: Se agotó el tiempo de espera del recurso. Posible interbloqueo de PDML

Errores de región y segmento ORA-00100 - ORA-00299

  • ORA-00100: no se encontraron datos
  • ORA-00101: especificación no válida del parámetro del sistema DISPATCHERS
  • ORA-00102: los despachadores no pueden usar el protocolo de red especificado
  • ORA-00103: protocolo de red no válido, reservado para uso de despachadores
  • ORA-00104: interbloqueo detectado, todos los servidores disponibles bloqueados, esperando recurso
  • ORA-00105: demasiadas configuraciones de despachador
  • ORA-00106: la base de datos no se puede iniciar ni detener mientras está conectado al despachador
  • ORA-00107: no se puede conectar al proceso de escucha de ORACLE
  • ORA-00108: no se puede configurar el despachador para aceptar conexiones asíncronas
  • ORA-00111: atributo no válido [cadena]
  • ORA-00112: el valor del atributo es nulo
  • ORA-00113: nombre de protocolo [cadena] demasiado largo
  • ORA-00114: valor no válido para el parámetro del sistema SERVICE_NAMES
  • ORA-00115: conexión interrumpida, tabla de conexiones llena
  • ORA-00116: el valor de SERVICE_NAMES no es válido
  • ORA-00117: Se debe especificar PROTOCOLO, DIRECCIÓN o DESCRIPCIÓN
  • ORA-00118: solo se puede especificar un valor de PROTOCOLO, DIRECCIÓN o DESCRIPCIÓN
  • ORA-00119: valor de parámetro del sistema no válido
  • ORA-00120: despachador no permitido o no instalado
  • ORA-00121: SHARED_SERVERS definido sin la opción DISPATCHERS
  • ORA-00122: no se puede inicializar la configuración de red
  • ORA-00123: servidor compartido inactivo
  • ORA-00124: DISPATCHERS especificados sin MAX_SHARED_SERVERS
  • ORA-00125: restablecimiento de conexión; Idea equivocada
  • ORA-00126: restablecimiento de conexión; contradicción
  • ORA-00127: despachador no existe
  • ORA-00128: el comando requiere el nombre del despachador
  • ORA-00129: dirección de escucha no válida
  • ORA-00130: dirección de escucha no válida
  • ORA-00131: el protocolo de red no admite el registro especificado
  • ORA-00132: error de sintaxis o nombre de red no válido
  • ORA-00150: ID de transacción duplicada
  • ORA-00151: ID de transacción duplicada
  • ORA-00152: la sesión actual no coincide con la sesión solicitada
  • ORA-00153: error en la biblioteca XA
  • ORA-00154: error de protocolo en el monitor de transacciones
  • ORA-00155: no se puede ejecutar el trabajo fuera de la transacción global
  • ORA-00160: el nombre de la transacción global supera la longitud máxima
  • ORA-00161: longitud de la transacción no válida
  • ORA-00162: la identificación de la base de datos externa supera el valor máximo
  • ORA-00163: el nombre de la base de datos externa supera el valor máximo
  • ORA-00164: transacciones autónomas distribuidas no permitidas además de transacciones distribuidas portátiles
  • ORA-00165: transacciones distribuidas portátiles fuera de línea con operaciones remotas no permitidas
  • ORA-00200: no se pudo crear el archivo de control
  • ORA-00201: la versión del archivo de control [cadena] no es compatible con la versión de ORACLE [cadena]
  • ORA-00202: archivo de control: [cadena]
  • ORA-00203: archivo de control no válido utilizado
  • ORA-00204: error al leer el bloque de datos (bloque [cadena], bloques [cadena]) en el archivo de control
  • ORA-00205: error en la identificación del archivo de control. Ver registro para más información
  • ORA-00206: error al escribir en el archivo de control (bloque [cadena], bloques [cadena])
  • ORA-00207: archivo de control no de esta base de datos
  • ORA-00208: el número de archivos de control supera el valor permitido [cadena]
  • ORA-00209: el bloque de datos del archivo de control no coincide. Ver registro para más información
  • ORA-00210: No se puede abrir el archivo de control especificado
  • ORA-00211: el archivo de control no coincide con el anterior
  • ORA-00212: tamaño de bloque [cadena] inferior al mínimo requerido [cadena]
  • ORA-00213: no se puede reutilizar el archivo de control, tamaño de archivo %1: se requiere %2:
  • ORA-00214: versión del archivo de control incompatible con la versión del archivo
  • ORA-00215: debe haber al menos un archivo de control
  • ORA-00216: el tamaño del archivo de control no se puede cambiar para la migración desde 8.0.2:
  • ORA-00217: el tamaño del archivo de control no se puede cambiar para migrar desde 9.0.1:
  • ORA-00218: el tamaño del bloque de datos de los archivos de control no coincide con el tamaño especificado por DB_BLOCK_SIZE
  • ORA-00219: el tamaño del archivo de control excede el tamaño establecido
  • ORA-00220: no se pudo incluir el archivo de control, consulte el registro de alertas para obtener más detalles
  • ORA-00221: error al escribir en el archivo de control
  • ORA-00222: la operación intenta usar el nombre de un archivo de control ya montado
  • ORA-00223: El archivo que se está convirtiendo no es válido o tiene una versión incorrecta
  • ORA-00224: archivo de control de cambio de tamaño fallido con tipo de registro incorrecto
  • ORA-00225: el tamaño esperado del archivo de control [cadena] difiere del tamaño real [cadena]
  • ORA-00226: la operación no es posible mientras el archivo de control alternativo está abierto
  • ORA-00227: bloque de datos dañado encontrado en el archivo de control (bloque [cadena] bloques [cadena]).
  • ORA-00228: la longitud del nombre del archivo de control alternativo supera el valor permitido [cadena]
  • Operación ORA-00229 denegada. El archivo de instantánea ya se ha puesto en cola y se está procesando.
  • Operación ORA-00230 denegada. La cola de instantáneas del archivo de control no está disponible
  • ORA-00231: instantánea del archivo de control sin nombre
  • ORA-00232: la instantánea del archivo de control no existe, está corrupta o no se puede leer
  • ORA-00233: copia del archivo de control corrupta o ilegible
  • ORA-00234: error al identificar o abrir una instantánea o copiar un archivo de control
  • ORA-00235: archivo de control bloqueado para modificación paralela
  • ORA-00236: instantánea cancelada, archivo de control alternativo seleccionado
  • ORA-00237: operación de instantánea no permitida. Creó un nuevo archivo de control
  • ORA-00238: la operación intenta usar el nombre de archivo como nombre de la base de datos
  • ORA-00250: el archivador no se está ejecutando
  • ORA-00251: LOG_ARCHIVE_DUPLEX_DEST no puede ser el mismo directorio que %1:
  • ORA-00252: el registro está vacío. No es posible archivar
  • ORA-00253: la longitud de la cadena especificada supera el límite
  • ORA-00254: error en la línea de control de archivo
  • ORA-00255: error al archivar el archivo de registro
  • ORA-00256: Se produjo un error al analizar una cadena de archivo
  • ORA-00257: error del archivador. No puedo conectarme mientras el recurso está ocupado
  • ORA-00258: Debe especificarse el archivado manual en el registro NOARCHIVELOG
  • ORA-00259: el registro de la instancia abierta es el registro actual y no se puede archivar
  • ORA-00260: no se puede encontrar el registro de cola activo [cadena] para el hilo [cadena]
  • ORA-00261: el registro se ha modificado o archivado
  • ORA-00262: el registro actual [cadena] está ocupado con otro subproceso [cadena], no se puede cambiar
  • ORA-00263: no hay registros para archivar para el hilo [cadena]
  • ORA-00264: no es necesario restaurar
  • ORA-00265: Se requiere recuperación de instancia, pero se puede configurar el modo ARCHIVELOG
  • ORA-00266: se requiere el nombre del registro de archivo
  • ORA-00267: no se requiere el nombre del registro de archivo
  • ORA-00268: El archivo de registro especificado no existe
  • ORA-00269: El archivo de registro especificado es parte de la transmisión [cadena], no [cadena]
  • ORA-00270: error al crear el registro de archivo [cadena]
  • ORA-00271: no hay registros para archivar
  • ORA-00272: error al escribir en el registro de archivo [cadena]
  • ORA-00273: Restauración de datos cargados directamente sin registro
  • ORA-00274: valor de parámetro de recuperación no válido [valor] especificado
  • ORA-00275: procedimiento de recuperación ya iniciado
  • ORA-00276: Se especificó la palabra clave CHANGE pero no se especificó el número de cambio
  • ORA-00277: opción de restauración no válida HASTA el indicador [cadena]
  • ORA-00278: el archivo de registro [cadena] ya no es necesario para la recuperación
  • ORA-00279: se requiere el nombre del archivo de registro
  • ORA-00280: secuencia y nombre de secuencia requeridos
  • ORA-00281: la restauración no se puede realizar mediante el despachador
  • ORA-00282: Llamada UPI no admitida, use ALTER DATABASE RECOVER
  • ORA-00283: sesión de restauración cancelada debido a errores
  • ORA-00284: sesión de recuperación en curso
  • ORA-00285: valor de HORA no válido
  • ORA-00286: no hay archivos disponibles o archivos de datos válidos
  • ORA-00287: número de cambio especificado [cadena] no encontrado en flujo [cadena]
  • ORA-00288: use ALTER DATABASE RECUPERAR CONTINUAR para continuar con la recuperación
  • ORA-00289: variable [valor]
  • ORA-00290: Error del sistema operativo. Ver mensaje de error a continuación
  • ORA-00291: PARALELO requiere un valor numérico
  • ORA-00292: componente de restauración en paralelo no instalado
  • ORA-00293: el archivo de control no está sincronizado con el registro de rehacer
  • ORA-00294: formato no válido especificado para el registro de archivo [cadena]
  • ORA-00295: número de archivo de datos temporales/datos no válidos [cadena], debe estar entre 1: y [cadena]
  • ORA-00296: Se excedió el valor de RECUPERAR LISTA DE ARCHIVOS DE DATOS
  • ORA-00297: requerido para especificar RECUPERAR LISTA DE ARCHIVO DE DATOS antes de RECUPERAR ARCHIVO DE DATOS INICIO
  • ORA-00298: valor de atributo faltante o no válido
  • ORA-00299: restauración de nivel de archivo del archivo de datos %1

Errores de gestión de E/S de la base de datos ORA-00300 - ORA-00399

Errores en la gestión de entrada y salida de la base de datos Oracle:

  • ORA-00300: Tamaño de bloque de registro de rehacer no válido, el tamaño especificado [cadena] supera el límite de tamaño [cadena]
  • ORA-00301: error al agregar el archivo de registro [cadena]: no se pudo crear el archivo
  • ORA-00302: límite excedido para el número de archivos de rehacer
  • ORA-00303: no se puede ejecutar Parallel Redo
  • ORA-00304: INSTANCE_NUMBER solicitado está ocupado
  • ORA-00305: el registro [cadena] del subproceso [cadena] es inconsistente y pertenece a otra base de datos
  • ORA-00306: se alcanzó el límite de instancias [cadena]
  • ORA-00307: NÚMERO_DE_INSTANCIA solicitado fuera de rango, máx. [cadena]
  • ORA-00308: no se puede abrir el registro de archivo [cadena]
  • ORA-00309: el registro pertenece a otra base de datos
  • ORA-00310: el registro archivado contiene una secuencia [cadena]; secuencia requerida [valor]
  • ORA-00311: No se puede leer el encabezado del registro de archivo
  • ORA-00312: registro disponible [cadena] subproceso [cadena]
  • ORA-00313: error al abrir el archivo de grupo de registro [cadena] secuencia [cadena]
  • ORA-00314: registro [cadena], la secuencia esperada [cadena] no coincide con [cadena]
  • ORA-00315: registro [cadena] secuencia [cadena], valor no válido [cadena] en el encabezado
  • ORA-00316: registro [cadena], valor [cadena] en el encabezado indica que este no es un archivo de registro
  • ORA-00317: el archivo especificado [cadena] no es un archivo de registro
  • ORA-00318: el registro [cadena] excedió el tamaño permitido [cadena] no coincide con [cadena]
  • ORA-00319: el registro [cadena] tiene un estado de vaciado incorrecto
  • ORA-00320: no se puede leer el encabezado del archivo [cadena] de la secuencia [cadena]
  • ORA-00321: No se pueden actualizar los datos en el encabezado del archivo de registro [cadena] secuencia [cadena]
  • ORA-00322: registro [cadena] del hilo [cadena] no es la copia actual
  • ORA-00323: el registro de transmisión actual [cadena] no se puede usar y todos los demás deben archivarse
  • ORA-00324: nombre de archivo de registro [cadena] traducido [cadena] demasiado largo, límite excedido [cadena]
  • ORA-00325: el registro del archivo de transmisión [cadena] contiene un valor de encabezado no válido [cadena]
  • ORA-00326: el registro comienza con [cadena], se requiere [cadena] modificado previamente
  • ORA-00327: el registro [cadena] del flujo [cadena] tiene un tamaño físico [cadena] inferior al requerido [cadena]
  • ORA-00328: el registro archivado termina con [cadena], se requiere un cambio posterior [cadena]
  • ORA-00329: el registro archivado comienza con [cadena], necesita cambiar [cadena]
  • ORA-00330: el registro de archivo termina con [cadena], se requiere cambio [cadena]
  • ORA-00331: la versión de registro [cadena] no es compatible con la versión de ORACLE [cadena]
  • ORA-00332: registro de archivo muy pequeño, posiblemente no archivado por completo
  • ORA-00333: registro de rehacer leído [cadena] bloques defectuosos de disponible [cadena]
  • ORA-00334: registro de archivo [cadena]
  • ORA-00335: registro disponible [cadena]: No hay registro con este número, el registro no existe
  • ORA-00336: tamaño de bloque de archivo de registro inferior al tamaño de bloque mínimo [cadena]
  • ORA-00337: el archivo de registro [cadena] no existe y no se especifica el tamaño
  • ORA-00338: registro [cadena] mayor que el último valor del archivo de control
  • ORA-00339: el registro archivado no contiene reintentos
  • ORA-00340: error de E/S al procesar el registro [cadena] del subproceso [cadena]
  • ORA-00341: el archivo de registro [cadena] tiene un número de encabezado no válido [cadena]
  • ORA-00342: el registro de archivo no contiene información de SCN [cadena]
  • ORA-00343: demasiados errores, registro cerrado
  • ORA-00344: no se puede volver a crear el registro disponible [cadena]
  • ORA-00345: error al escribir en el registro de rehacer, bloquear [cadena] total [cadena]
  • ORA-00346: diario marcado como desactualizado (OBSERVADO)
  • ORA-00347: el registro [cadena] del subproceso [cadena] tiene un tamaño de bloque [cadena], no coincide, debe ser [cadena]
  • ORA-00348: procesamiento de recuperación de rehacer fallido, la instancia debe detenerse
  • ORA-00349: Error al recuperar el tamaño de bloque para [cadena]
  • ORA-00350: se debe archivar el registro [cadena] (flujo [cadena]) de la instancia [cadena]
  • ORA-00351: tiempo de recuperación no válido
  • ORA-00352: todos los registros del flujo [cadena] deben archivarse; no se puede permitir
  • ORA-00353: bloque de registro corrupto [cadena] cambio [cadena] hora [cadena]
  • ORA-00354: el encabezado del bloque de registro de rehacer está dañado
  • ORA-00355: cambio de número fuera de secuencia
  • ORA-00356: longitud de descripción de cambio no válida
  • ORA-00357: se especificaron demasiados miembros para el archivo de registro, máx. [cadena]
  • ORA-00358: se especificaron demasiados miembros, máx. [cadena]
  • ORA-00359: el grupo de archivos de registro [cadena] no existe
  • ORA-00360: No es miembro del archivo de registro: [cadena]
  • ORA-00361: no se puede eliminar el último registro [cadena] del grupo [cadena]
  • ORA-00362: el miembro requerido es un archivo de registro válido en el grupo [cadena]
  • ORA-00363: registro no archivado
  • ORA-00364: no se puede escribir en el nuevo encabezado de registro
  • ORA-00365: El registro especificado no es válido
  • ORA-00366: registro [cadena] secuencia [cadena], error de suma de comprobación en el encabezado del archivo
  • ORA-00367: error de suma de comprobación en el encabezado del archivo
  • ORA-00368: error de suma de comprobación en el bloque de registro de rehacer
  • ORA-00369: registro actual del subproceso [cadena] dañado y otro registro borrado
  • ORA-00371: no hay suficiente memoria en el grupo compartido, debe ser al menos [cadena]
  • ORA-00372: el archivo [cadena] no se puede modificar en este momento
  • ORA-00373: la versión de registro abierto [cadena] no es compatible con la versión de ORACLE [cadena]
  • ORA-00374: el valor del parámetro db_block_size=[valor] no es válido; debe ser compuesto en el rango [valor..valor]
  • ORA-00375: no se puede obtener el valor predeterminado de db_block_size
  • ORA-00376: el archivo [cadena] no se puede leer en este momento
  • ORA-00377: la copia de seguridad frecuente del archivo [cadena] provoca un punto muerto en las operaciones de escritura
  • ORA-00378: no se pudo crear la memoria caché del búfer según lo especificado
  • ORA-00379: no hay búferes libres en la memoria caché del búfer [cadena] para el bloque [cadena]K
  • ORA-00380: no se puede especificar db_[valor]k_cache_size [valor]K es el tamaño de bloque estándar.
  • ORA-00381: no se pueden usar las opciones antiguas y nuevas para especificar el tamaño de la memoria caché del búfer
  • ORA-00382: %s tamaño de bloque no válido, valor válido [str..value]
  • ORA-00383: el valor predeterminado de caché no se puede reducir a cero
  • ORA-00384: no hay suficiente memoria para hacer crecer la memoria caché
  • ORA-00390: registro [cadena] del subproceso [cadena] borrado y no puede ser el registro actual
  • ORA-00391: todos los subprocesos a partir de ahora deben cambiar al nuevo formato de registro
  • ORA-00392: se borró el registro [cadena] del subproceso [cadena], no se permitió la operación
  • ORA-00393: registro [cadena] del subproceso [cadena] necesario para restaurar una base de datos fuera de línea.
  • ORA-00394: el registro disponible se reutiliza durante el archivado
  • ORA-00395: se debe cambiar el nombre del registro para la clonación de la base de datos
  • ORA-00396: el error [cadena] requiere la reversión a la restauración de un solo paso
  • ORA-00397: restauración de instancia anulada con error
  • ORA-00398: restauración cancelada antes de la reconfiguración adecuada
  • ORA-00399: descripción corrupta de cambios en el registro de rehacer

Errores de inicialización de base de datos ORA-00400 - ORA-00499

  • ORA-00400: valor no válido [cadena] para el parámetro [cadena]
  • ORA-00401: el valor del parámetro [valor] no es compatible con esta versión
  • ORA-00402: los cambios de la base de datos de la versión [cadena] no pueden ser utilizados por la versión [cadena]
  • ORA-00403: [cadena] no es lo mismo que otras instancias de [cadena]
  • ORA-00404: Archivo convertido no encontrado: [cadena]
  • ORA-00405: tipo de compatibilidad [cadena]
  • ORA-00406: la opción COMPATIBLE requiere [cadena] o superior
  • ORA-00407: Actualización revertida de la versión [cadena].[cadena] a la versión [cadena].[cadena] no permitida
  • ORA-00408: valor de parámetro [cadena] establecido en VERDADERO
  • ORA-00436: Oracle no tiene licencia. Póngase en contacto con Oracle Corporation para obtener ayuda
  • ORA-00437: Funciones avanzadas de Oracle sin licencia. Póngase en contacto con Oracle Corporation para obtener ayuda
  • ORA-00438: opción [cadena] no establecida
  • ORA-00439: función opcional no permitida: [cadena]
  • ORA-00443: el proceso en segundo plano [cadena] no se está ejecutando
  • ORA-00444: el proceso en segundo plano [cadena] falló al iniciar
  • ORA-00445: el proceso en segundo plano [cadena] no comenzó después de que transcurrieran [cadena] segundos
  • ORA-00446: proceso en segundo plano iniciado cuando no se esperaba
  • ORA-00447: error crítico en proceso en segundo plano
  • ORA-00448: finalización normal de un proceso en segundo plano
  • ORA-00449: proceso en segundo plano [cadena] terminado abruptamente con error [cadena]
  • ORA-00470: Proceso LGWR finalizado con un error
  • ORA-00471: Proceso DBWR finalizado con un error
  • ORA-00472: proceso pmon finalizado con un error
  • ORA-00473: Proceso ARCH finalizado con un error
  • ORA-00474: proceso smon finalizado con un error
  • ORA-00475: Proceso TRWR finalizado con un error
  • ORA-00476: Proceso RECO finalizado con un error
  • ORA-00477: Se cerró el proceso SNP* con un error
  • ORA-00478: proceso smon finalizado con error [cadena]
  • ORA-00480: Proceso LCK* finalizado con error
  • ORA-00481: Proceso LMON finalizado con un error
  • ORA-00482: Se cerró el proceso LMD* con un error
  • ORA-00483: el proceso finalizó de manera anormal durante el apagado
  • ORA-00484: Se cerró el proceso LMS* con un error
  • ORA-00485: Proceso DIAG finalizado con error [cadena]

Mensajes de error ORA-00500 - ORA-00599

  • ORA-00568: se superó el número máximo de interrupciones del controlador

Errores de recuperación ante desastres ORA-00600 - ORA-00699

  • ORA-00600: Código de error interno, argumentos [valor], [valor], [valor], [valor], [valor], [valor], [valor], [valor]
  • ORA-00601: conflicto de bloqueo de red
  • ORA-00602: excepción de software interno
  • ORA-00603: La sesión del servidor de Oracle finalizó debido a un error fatal
  • ORA-00604: se produjo un error en el nivel de SQL recursivo [cadena]
  • ORA-00606: código de error interno
  • ORA-00607: Error interno al cambiar el bloque de datos

Errores de diccionario ORA-00700 - ORA-00799

  • ORA-00701: el objeto requerido para iniciar la base de datos no se puede modificar
  • ORA-00702: versión del cargador [cadena] incompatible con la versión [cadena]
  • ORA-00703: se superó el número máximo de bloqueos de caché de fila de instancia
  • ORA-00704: el proceso de inicio finalizó de manera anormal
  • ORA-00705: estado no válido durante el inicio; detener la instancia y reiniciar
  • ORA-00706: error al cambiar el formato de archivo [cadena]

Errores generales de ORACLE ORA-00800 - ORA-00899

  • ORA-0800: el proceso de escritura del búfer no está activo(el proceso de escritura en el búfer no está activo).
    Causa: El problema está relacionado con un intento de iniciar ORACLE, lo que provocó que se eliminara el proceso de escritura en el búfer. Normalmente, este mensaje se emite junto con un mensaje de error del sistema que explica el motivo del error.
    Acción: Utilice el mensaje de error del sistema (si lo hay) para averiguar la causa del error. Si no hay ningún error del sistema, consulte la Guía de instalación de ORACLE para obtener una lista de requisitos. Asegúrese de que todos los nombres lógicos de ORACLE sean correctos, que haya suficiente espacio libre en el disco en el directorio de ORACLE y que haya suficientes secciones y páginas globales. También asegúrese de que el presupuesto de ORACLE tenga la prioridad requerida. Si no se identifica el origen del problema, consulte el software de instalación adecuado.
  • ORA-0801: después del proceso de escritura de imágenes no está activo
    Causa: esta propiedad no es compatible.
    Acción: Consulte el software de instalación correspondiente.
  • ORA-0802: área de contexto no válida
    Causa
    Acción
  • ORA-0805: opiodr: número de nivel de recursividad inconsistente
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-0806: antes del proceso de imagen no está activo
    Causa
    Acción
  • ORA-0807: el proceso de limpieza no está activo
    Causa: El problema está relacionado con un intento de iniciar ORACLE, lo que provocó que se cancelara el proceso de vista previa. Por lo general, este mensaje se emite junto con un mensaje de error del sistema que explica el motivo de la falla.
    Acción: Utilice el mensaje de error del sistema (si lo hay) para averiguar la causa del error. Si no hay ningún error del sistema, consulte la guía de instalación de ORACLE para su sistema operativo para verificar la instalación correcta. Si no se identifica el origen del problema, consulte el software de instalación adecuado.
  • ORA-0809: opispf: código de función especial no válido.
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-0810: opiomc: área de contexto no reasignada en la dirección original
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-0811: el proceso de lectura anticipada no está activo
    Causa: El problema está relacionado con un intento de iniciar ORACLE, lo que provocó la cancelación del proceso de lectura anticipada. Normalmente, este mensaje se emite junto con un mensaje de error del sistema que explica el motivo del error.
    Acción: Utilice el mensaje de error del sistema (si lo hay) para averiguar la causa del error. Si no hay ningún error del sistema, consulte la guía de instalación de ORACLE para su sistema operativo para verificar la instalación correcta. Si no se identifica el origen del problema, consulte el software de instalación adecuado.
  • ORA-0813: error de aserción (se eliminó el apéndice).
    Causa:Este es un mensaje de error interno relacionado con ORACLE SORT. Esto no puede suceder durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-0814: ltbdrv: modo de bloqueo ilegal
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-00816: error en la traducción del mensaje de error
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-0817: prsgkw: token de error interno no encontrado
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-0818: opispf: osf demasiado grande
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.

Errores de sintaxis ORA-00900 - ORA-00999

  • ORA-00900: instrucción SQL no válida.
    Causa: La declaración que ingresó no fue reconocida como un comando SQL válido.
    Acción: Verifique errores tipográficos, asegúrese de que las palabras clave del comando SQL comiencen con una de las siguientes palabras: ALTER, AUDIT, CREATE, DELETE, DROP, GRANT, INSERT, NOAUDIT, RENAME, REVOKE, SELECT, UPDATE, LOCK, VALIDATE. Otros comandos causarán este error.
  • ORA-00901: sintaxis del comando CREATE no válida/comando de creación no válido.
    Causa: Se usó una opción CREATE no válida en el comando CREATE.
    Acción: compruebe si hay errores tipográficos, asegúrese de que el comando CREAR vaya seguido de una de las siguientes opciones: ÍNDICE, PARTICIÓN, DEFINICIÓN DE ESPACIO, SINÓNIMO, TABLA o VISTA.
  • ORA-00902: tipo de datos no válido.
    Causa: El tipo de datos ingresado en una sentencia CREATE o ALTER TABLE no es válido.
    Acción: compruebe si hay errores tipográficos, asegúrese de que cada nombre de columna vaya seguido de uno de los siguientes tipos de datos: DATA, CHAR, NUMBER, RAW, LONG o LONG RAW.
  • ORA-00903: nombre de tabla no válido.
    Causa: Los nombres de tabla o grupo ingresados ​​no existen o no son válidos. Este mensaje también aparece si se especifica un nombre de grupo inválido o inexistente en el comando ALTER/DROP CLUSTER.
    Acción: Compruebe si hay errores tipográficos. Un nombre de grupo válido debe comenzar con una letra y contener solo letras, números y caracteres especiales: $, # y _. El nombre no debe tener más de 30 caracteres y no debe ser una palabra reservada.
  • ORA-00904: nombre de columna no válido.
    Causa: Falta el nombre de columna ingresado o no es válido.
    Acción: Introduzca un nombre de columna válido. Un nombre válido debe comenzar con una letra y contener solo letras, números y caracteres especiales: $, # y _. El nombre no debe tener más de 30 caracteres y no debe ser una palabra reservada. Si contiene otros caracteres, debe estar entre comillas dobles.
  • ORA-00905: palabra clave faltante.
    Causa: Se omite la palabra clave requerida.
    Acción: Verifique la sintaxis del comando y agregue las palabras clave que faltan.
  • ORA-00906: falta el paréntesis izquierdo.
    Causa: Se omitió el paréntesis izquierdo obligatorio. Los comandos básicos (como CREAR TABLA, CREAR CLÚSTER e INSERTAR) requieren una lista de elementos entre paréntesis. También se requieren paréntesis alrededor de las secuencias en la cláusula WHERE y en la columna SET de la tabla UPDATE = (SELECT ...).
    Acción: compruebe la sintaxis del comando e inserte los corchetes que faltan.
  • ORA-00907: falta el paréntesis derecho
    Causa: El paréntesis izquierdo se ingresó sin el paréntesis derecho de cierre, o la información anterior se encerró entre paréntesis. Todos los paréntesis deben estar emparejados.
    Acción: Inserte un corchete derecho de cierre.
  • ORA-00908: falta la palabra clave NULL
    Causa: En las declaraciones CREATE o ALTER TABLE, se introdujo NOT para indicar que no se permitían valores nulos en esta columna, pero se omitió la palabra clave NULL.
    Acción: si necesita un valor en esta columna, reemplace la palabra clave NOT con NOT NULL.
  • ORA-00909: número de argumentos no válido
    Causa: Se hizo una referencia a una función ORACLE integrada con un número incorrecto de argumentos. Todas las funciones ORACLE excepto SYSDATE requieren al menos un argumento.
    Acción: Verifique la sintaxis del comando e ingrese el número requerido de argumentos.
  • ORA-00910: longitud especificada demasiado grande para la columna CHAR
    Causa: Tamaño del campo de caracteres no especificado o especificado incorrectamente. Debe especificar la longitud máxima para cada columna de caracteres, esta longitud puede tomar valores desde 0: hasta 240: .
    Acción: Introduzca la longitud máxima de 0 a 240: .
  • ORA-00911: carácter no válido
    Causa: El carácter especial no es válido o solo es válido en ciertos lugares. Si se utiliza un carácter especial (distinto de $, # y _) en un nombre y el nombre no está entre comillas dobles ("), aparecerá este mensaje.
    Acción: elimina el carácter no válido del comando.
  • ORA-00912: operación emergente de operandos sin operandos en la pila
    Causa: Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-00913: demasiados valores
    Causa: El comando asume dos conjuntos de valores idénticos, pero el segundo conjunto tiene más elementos que el primero. Por ejemplo: una subconsulta en una cláusula WHERE o HAVING puede tener demasiadas columnas, o puede haber más columnas en una cláusula VALUES o SELECT que en una cláusula INSERT.
    Acción: Compruebe el número de artículos y cámbielos.
  • ORA-00914: falta la palabra clave ADD
    Causa: El comando ALTER PARTITION se ingresó sin la palabra clave ADD.
    Acción: verifique la sintaxis del comando y vuelva a intentarlo.
  • ORA-00915: actualmente no se permite el acceso a la red de la tabla del diccionario
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-00917: coma faltante coma faltante
    Causa: Falta una coma en una lista de columnas, o en una lista de valores en una sentencia INSERT, o en una lista de la forma ((c,d),(e< f),...).
    Acción: Verifique la sintaxis en su declaración SQL y agregue una coma faltante si es necesario.
  • ORA-00918: columna definida de forma ambigua
    Causa: La columna utilizada para la combinación existe en más de una tabla. Al unirse, cualquier columna presente en más de una tabla debe contener el nombre de la tabla. El nombre de la columna debe ser TABLE.COLUM o TABLE_ALIAS.COLUMN, EMP.DEPTNO o E.DEPTNO, no solo EMP.
    Acción: Ingrese el nombre de la tabla en el nombre de la columna antes del punto o el nombre de la tabla alternativa como se muestra arriba.
  • ORA-00919: función no válida
    Causa: La entrada similar a una función de tipo función (argumento) no se reconoce como una función de ORACLE.
    Acción: Consulte el manual para obtener una lista de nombres de funciones válidos.
  • ORA-00920: operador relacional no válido
    Causa: Tarea de búsqueda con declaración de condición inválida o faltante.
    Acción: Ingrese una declaración condicional válida. Se permiten las siguientes sentencias relacionales: =, !=,<>, >, >=, <, <=,IN, IS, NULL, LIKE, и BETWEEN.
  • ORA-00921: final inesperado del comando SQL
    Causa: El comando SQL está incompleto. Se ingresó parte de un comando válido, pero se omitió al menos un componente principal.
    Acción: Verifique la sintaxis del comando e inserte los componentes faltantes.
  • ORA-00922: opción no válida
    Causa: Se declaró una opción no válida en una definición de columna o una definición de área.
    Acción: elimine la opción no válida de la definición de columna o área. Una opción válida que describe una columna es NOT NULL para indicar que la columna no puede contener valores NULL. Cualquier otra cosa que siga al tipo de datos, excepto una coma o un paréntesis de cierre, se clasifica como una opción no válida. Al describir una longitud para DATA o un tipo de datos LONG, obtendrá este mensaje de error. Solo se permiten las siguientes opciones en la declaración de definición de alcance: INITIAL, INCREMENT y MAXEXTENTS, (para DATAPAGES e INDEXPAGES) y PCTFREE (solo para DATAPAGES).
  • ORA-00923: falta la palabra clave FROM
    Causa: En una instrucción SELECT o REVOKE, la palabra clave FROM se omite, se coloca en un lugar incorrecto o se escribe incorrectamente. La palabra clave FROM debe seguir al elemento seleccionado en la instrucción SELECT o al nombre de la tabla seleccionada en la instrucción REVOKE.
    Acción: Reemplace la palabra DESDE. La lista seleccionada puede ser errónea en sí misma. Asegúrese de utilizar comillas simples para encerrar el alias y si el alias es una palabra reservada o no.
  • ORA-00924: falta la palabra clave BY
    Causa: Falta la palabra clave BY en las expresiones GROUP BY, ORDER BY o CONNECTED BY. Además, en el comando GRANT, la palabra IDENTIFIED debe ir seguida de BY.
    Acción: Inserte la palabra POR correctamente.
  • ORA-00925: falta la palabra clave INTO
    Causa: Se usó un comando INSERT sin la palabra clave INTO.
    Acción: Reemplace INSERTAR con INSERTAR EN.
  • ORA-00926: falta la palabra clave VALUES
    Causa: sentencia INSERT sin la palabra clave VALUES o SELECT. Una instrucción INSERT INTO debe ir seguida de una secuencia VALUES o SELECT.
    Acción: Escriba una expresión o secuencia VALUES después de la expresión INSERT INTO.
  • ORA-00927: Falta el signo igual
    Causa: Falta el signo igual en uno de los siguientes lugares: * en la declaración SET del comando UPDATE * después! para indicar desigualdad * en la expresión PCTFREE del comando CREATE INDEX
    Acción: Inserta un signo igual.
  • ORA-00928: falta la palabra clave SELECT
    Causa: Se debe incluir una secuencia SELECT en el comando CREATE VIEW.
    Acción: Inserte la instrucción SELECT requerida en el comando CREATE VIEW.
  • ORA-00929: período faltante
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-00930: asterisco faltante
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-00931: falta el identificador
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-00932: tipos de datos inconsistentes tipo de datos inconsistente
    Causa: intenta agregar un campo de caracteres a un campo de datos. Los datos solo se pueden agregar a campos numéricos.
    Acción: Convierta un campo de caracteres en un campo numérico usando la función TO_NUMBER antes de agregar el campo de datos.
  • ORA-00933: comando SQL y no finalizó correctamente
    Causa: comando SQL terminado con una expresión no válida. Por ejemplo: se puede incluir una cláusula ORDER BY en una declaración CREATE VIEW o INSERT, pero no se debe usar ORDER BY para crear otra vista ni incluirse en el pedido principal.
    Acción: Verifique la sintaxis del comando y elimine los componentes innecesarios. Debería poder duplicar expresiones eliminadas con otros comandos. Por ejemplo, si desea ordenar las líneas de revisión, proceda de la misma manera que cuando solicita una revisión, pero no como cuando crea una. Este error también puede ocurrir al usar SQL*Forms si la continuación de la línea está sangrada. Compruebe las compensaciones y elimine los espacios. Debe usar las terminaciones SQL apropiadas si usa una expresión I con un argumento, por ejemplo: IN(X). La expresión IN debe tomar al menos dos argumentos.
  • ORA-00934: establecer función no permitida aquí
    Causa: una de las funciones de grupo (como AVG, SUM, MAX, MIN, COUNT) se usó en una cláusula WHERE o GROUP BY.
    Acción: elimine la función de grupo de las cláusulas WHERE o GROUP BY. Puede obtener el resultado deseado al incluir la función en una consulta o cláusula HAVING.
  • ORA-00935: la función de configuración está demasiado anidada
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-00936: expresión faltante
    Causa: Parte requerida de la expresión omitida. Por ejemplo, se ingresa un comando SELECT sin una lista de columnas o con una expresión de tipo incompatible (SAL+). Esto también puede suceder si se omiten palabras reservadas como SELECT TABLE.
    Acción: Verifique la sintaxis del comando e ingrese los comandos que faltan.
  • ORA-00937: ni una sola función de conjunto de grupos
    Causa: No puede incluir una función de grupo (AVG, SUM,COUNT,MIN o MAX) y una expresión de columna personalizada en una consulta al mismo tiempo a menos que la expresión de columna esté incluida en la cláusula GROUP BY.
    Acción: elimine la expresión de columna o la función de grupo de la consulta, o agregue una cláusula GROUP BY que incluya una enumeración de columna.
  • ORA-00938: no hay suficientes argumentos para la función
    Causa: Se declaran muy pocos argumentos en la función.
    Acción: compruebe la sintaxis de la función y agregue los argumentos necesarios.
  • ORA-00939: demasiados argumentos a favor de la función
    Causa: La función tiene demasiados argumentos.
    Acción: Verifique la sintaxis de la función y describa solo los argumentos requeridos.
  • ORA-00940: comando ARTER no válido y comando ALTER no válido
    Causa: Opción ALTER no válida descrita. Solo las secciones y las tablas pueden ser no repetitivas. Un comando ALTER válido debe comenzar con una de las siguientes opciones: ALTER TABLE o ALTER PARTITION.
    Acción Nota: Verifique la sintaxis para la ortografía correcta del comando ALTER.
  • ORA-00941: falta el nombre del clúster
    Causa: Falta el nombre del grupo o no es válido.
    Acción: Describa el nombre de grupo correcto. Un nombre de grupo válido comienza con una letra, no contiene más de 30 caracteres y consta solo de letras, números y los caracteres especiales $, _ y #. No debe ser una palabra reservada. El nombre debe imprimirse inmediatamente después de la palabra clave CREATE CLUSTER.
  • ORA-00942: tabla o vista no existe
    Causa: Esta tabla o resumen no existe. o se ingresa un nombre de vista en lugar de una tabla. Las tablas de usuarios existentes y los resúmenes se pueden ver en el resumen TAB.
    Acción: compruebe si hay errores tipográficos y si ha introducido un nombre de revisión en lugar de una tabla. Introduzca los nombres existentes.
  • ORA-00943: el clúster no existe
    Causa: El recurso de usuario no está incluido en el grupo con el nombre descrito.
    Acción: Describa el nombre de grupo correcto inmediatamente después de la palabra clave CLUSTER.
  • ORA-00944: número insuficiente de columnas agrupadas
    Causa: Se intentó crear una tabla con menos columnas agrupadas que las descritas en el comando CREATE CLUSTER. La expresión CLUSTER del comando CREATE TABLE debe describir todas las columnas agrupadas definidas cuando se creó el grupo. Usando el nombre del grupo, puede ver todas las columnas del grupo en la tabla del diccionario COL.
    Acción: Describa todos los nombres de columna en el comando CREATE TABLE.
  • ORA-00945: la columna agrupada especificada no existe
    Causa: La columna descrita en la expresión de la sentencia CREATE TABLE no es una columna de esta tabla.
    Acción: Repita usando el nombre de la columna de la tabla.
  • ORA-00946: falta la palabra clave TO
    Causa: El comando GRANT se ingresó sin la palabra clave TO o se usó una forma no válida de este comando.
    Acción: Verifique la sintaxis de las dos formas principales del comando GRANT (otorgar acceso a la base de datos y otorgar privilegios). Inserte la palabra clave TO correctamente en el comando GRANT.
  • ORA-00947: no hay suficientes valores
    Causa: La instrucción SQL requiere dos conjuntos de valores idénticos y el segundo conjunto contiene menos valores. Esto también puede suceder si un SELECT anidado encuentra menos columnas en una expresión WHERE o HAVING, como en: WHERE(A,B) IN (SELECT C FROM..) También puede ocurrir un error en una instrucción INSERT en la que la expresión VALUES o SELECCIONAR no contiene suficientes valores para INSERTAR, como en: INSERTAR EN la tabla (A,B) VALORES ("C").
    Acción: Verifique la fuerza de cada conjunto y hágalos iguales en número.
  • ORA-00948: La instrucción ALTER CLUSTER ya no es compatible
    Causa: instrucción ALTER CLUSTER eliminada
    Acción: Para agregar datos de una tabla, use el siguiente conjunto de instrucciones SQL: CREATE TABLE<новая_таблица>SELECCIONAR DE<старая_таблица>GRUPO<имя_группы>SOLTAR<старая_таблица>y RENOMBRAR TABLA<новая_таблица> <старая_таблица>.
  • ORA-00949: referencia ilegal a base de datos externa
    Causa:Este es un mensaje de error interno que no puede ocurrir durante el funcionamiento normal.
    Acción: Consulte el software de configuración correspondiente para obtener una descripción detallada del problema.
  • ORA-00950: opción de caída no válida opción de DROP no válida
    Causa: Después del comando DROP, no había ninguna opción DROP como TABLE, VIEW, SYNONYM, CLUSTER o SPACE.
    Acción: Verifique la sintaxis del comando y use el formato correcto para la opción DROP.
  • ORA-00951: clúster no vacío
    Causa: El comando DROP describe un grupo no vacío. Un grupo solo se puede eliminar si no contiene tablas. Elimine una tabla de un grupo usando el comando DROP TABLE.
    Acción: elimine todas las tablas del grupo y luego use el comando DROP CLUSTER.
  • ORA-00952: falta la palabra clave GRUPO
    Causa: El grupo está implementado incorrectamente.
    Acción: No se requiere ninguna acción por parte del usuario.
  • ORA-00953: falta el nombre del índice
    Causa: En los comandos CREATE, DROP, VALIDATE INDEX, el nombre del índice es incorrecto o falta.
    Acción: escriba el nombre de índice correcto después de la palabra clave INDEX. Si desea eliminar o corregir un índice, compruebe el nombre consultando la descripción general de ÍNDICES. Si necesita crear un nuevo índice, verifique primero la sintaxis.
  • ORA-00954: falta la palabra clave IDENTIFICADA
    Causa: El comando GRANT CONNECTION se emitió sin la palabra clave INDENTIFIED.
    Acción: Inserte la palabra clave INDENTIFICADA después del nombre de usuario. El formato del comando es el siguiente: GRANT CONNECTION TO<список пользователей>INDETIFICADO POR<пароль списка>.
  • ORA-00955: el objeto existente ya usa el nombre
    Causa: se intentó crear una tabla, vista, grupo o sinónimo que ya existe. Cada nombre de tabla de usuario debe ser distinto de otros nombres de tabla, vistas, grupos o sinónimos que pertenecen a otros usuarios.
    Acción: Ingrese una tabla, vista, grupo o nombre de sinónimo únicos, o modifique o elimine uno existente.
  • ORA-00956: opción de auditoría no válida - opción de auditoría no válida
    Causa: Había una opción de verificación no válida.
    Acción: Compruebe la sintaxis del comando y vuelva a intentarlo con la opción correcta.
  • ORA-00957: nombre de columna duplicado
    Causa: El nombre de la columna se declaró dos veces en una sentencia CREATE o INSERT. El nombre de una columna en una tabla, resumen o grupo debe ser único.
    Acción: Reemplace el nombre de la columna en el comando CREAR con uno nuevo y exclusivo. En el comando INSERTAR, elimine los nombres duplicados.
  • ORA-00958: falta la palabra clave CHECK
    Causa: Falta CHECK inmediatamente después de la palabra clave WHITH en la cláusula WITH CHECK OPTION de la instrucción CREATE VIEW.
    Acción: Compruebe la sintaxis de la instrucción SQL.
  • ORA-00959: el nombre de definición de espacio no existe
    Causa: El comando A DROP SPACE describió un nombre de área inexistente.
    Acción: utilice nombres de definición de ámbito existentes. Para ver los nombres existentes, seleccione SNAME de ESPACIOS.
  • ORA-00960: valor INICIAL no válido
    Causa: Se especificó un valor de número de página de índice o página de datos de inicio no válido en el comando CREATE SPACE. Este valor debe ser al menos 3.
    Acción: Introduzca un valor INICIAL de al menos 3.
  • ORA-00961: valor de INCREMENTO no válido
    Causa: Se describió un valor de recuento de pasos no válido para la página de datos o la página de índice. El valor del paso debe ser mayor que 3.
    Acción: Introduzca un valor de INCREMENTO mayor que 3.
  • ORA-00962: valor PCTFREE no válido
    Causa: Se describió un valor de porcentaje de espacio libre incorrecto en la definición de ESPACIO. Este valor debe estar en el rango de 1: a 99.
    Acción: Ingrese un valor PCTFREE entre 1: y 99.
  • ORA-00963: valor de TAMAÑO no válido
    Causa: Se especificó un valor de tamaño de bloque lógico no válido en el comando CREATE CLUSTER. El tamaño de bloque lógico se utiliza para almacenar de manera eficiente pequeños grupos de datos.
    Acción: Describe el valor permitido del tamaño del bloque lógico (mayor que 0).
  • ORA-00964: nombre de defensa de espacio no válido
    Causa: Se especificó un nombre de dominio no válido en el comando CREATE/DROP SPACE o en CREATE TABLE, o se especificó un nombre de dominio inexistente en el comando CREATE TABLE.
    Acción: Introduzca un nombre de área válido. Un nombre válido comienza con una letra, no contiene más de 30 caracteres y consta solo de letras, números y los caracteres especiales $, _ y #. No debe ser una palabra reservada. Si su nombre es correcto, es posible que haya eliminado sin darse cuenta la definición del ámbito TEMP.
  • ORA-00965: el nombre de definición de espacio ya existe
    Causa: Se usó un nombre de dominio existente en el comando CREATE SPACE. Los nombres de definición de dominio deben ser únicos.
    Acción: Ingrese un nombre único para el área.
  • ORA-00966: falta la palabra clave TABLE
    Causa: Se usó un comando LOCK y la palabra clave TABLE se escribió mal, se omitió o se extravió. El comando LOCK debe comenzar así: LOCK TABLE<имя таблицы> ... .
    Acción: Inserte la palabra clave TABLE en el lugar apropiado.
  • ORA-00968: falta la palabra clave INDEX
    Causa: Se usó el comando CREATE UNIQUE y la palabra clave INDEX se escribió mal, se omitió o se extravió.
    Acción: compruebe la sintaxis y vuelva a intentarlo.
  • ORA-00969: falta la palabra clave ON
    Causa: Se usó un comando GRANT o CREATE INDEX y la palabra clave ON se escribió mal, se omitió o se extravió.
    Acción: Inserte la palabra clave ON en el lugar apropiado.
  • ORA-00970: falta la palabra clave WITH - falta la palabra clave WITH
    Causa: La palabra clave START se usó sin WITH. Ambas palabras clave son necesarias en la cláusula START WITH de la consulta.
    Acción: Reemplace la palabra COMENZAR con COMENZAR CON.
  • ORA-00971: falta la palabra clave SET - falta la palabra clave SET
    Causa: En el comando ACTUALIZAR, la palabra clave SET se escribió mal, se omitió o se extravió.
    Acción: Inserte la palabra clave SET después del nombre de la tabla a cambiar.
  • ORA-00972: el identificador es demasiado grande
    Causa: el nombre del objeto de la base de datos tiene más de 30 caracteres (los objetos de la base de datos son tablas, grupos, vistas, índices, sinónimos, dominios y nombres de usuario).
    Acción: acorte el nombre a un máximo de 30 caracteres.
  • ORA-00973: estimación de recuento de filas no válida
    Causa: El valor de recuento de filas descrito en el comando CREATE INDEX es un número menor que 0.
    Acción: Describe un valor válido (mayor que 0).
  • ORA-00974: factor de carga de bloque de índice no válido (porcentaje)
    Causa: Porcentaje del volumen utilizado, descrito en el comando CREAR ÍNDICE, el área no pertenece al intervalo de 1: al 90%.
    Acción: Introduzca un valor PCTFREE entre 1 y 90. El valor predeterminado es 10.
  • ORA-00975: Fecha + fecha no permitida
    Causa: intento de agregar dos campos de datos juntos. Los datos solo se pueden agregar a campos numéricos, no a otros datos.
    Acción: agrega un campo de datos a un campo numérico.
  • ORA-00977: opción de auditoría duplicada - opción de auditoría doble
    Causa: Se ha vuelto a describir la misma opción de control.
    Acción: Elimina la descripción de control redundante.
  • ORA-00978: función de conjunto anidado sin GROUP BY
    Causa: Se usó una función de grupo (como MIN, MAX o AVG) dentro de otra función de grupo (como MAX(COUNT(*))) sin una cláusula GROUP BY correspondiente.
    Acción: agregue una cláusula GROUP BY o elimine el nivel de anidamiento externo.
  • ORA-00979: no es una expresión GROUP BY expressio no pertenece a GROUP BY
    Causa: La cláusula GROUP BY no contiene todas las expresiones de la cláusula SELECT. Las expresiones de SELECT no incluidas en las funciones de grupo (COUNT, SUM, AVG, MAX, MIN) deben enumerarse en la cláusula GROUP BY.
    Acción: Incluya todas las expresiones SELECT que no sean argumentos para agrupar funciones en la cláusula GROUP BY.
  • ORA-00980: la traducción del sinónimo ya no es válida
    Causa: El sinónimo que usó fue para una tabla, vista o sinónimo que se eliminó o cambió de nombre.
    Acción: Reemplace el sinónimo con el nombre de la tabla, vista, sinónimo para el que estaba destinado. O bien, vuelva a generar el sinónimo para las tablas, vistas o sinónimos correctos.
  • ORA-00981: no se pueden combinar las opciones de auditoría de tabla y de todo el sistema
    Causa: Simultáneamente la opción de ancho tanto de la mesa como del sistema se describen en la misma sentencia AUDIT.
    Acción: Corrige el operador.
  • ORA-00982: falta el signo más
    Causa: Cuando se agrega, no hay signo más (+) después del paréntesis izquierdo. Al agregar, el paréntesis izquierdo (abierto) se interpreta como una descripción de un apéndice y se espera un signo más. Para describir un archivo adjunto a una columna, la descripción de la columna debe ir seguida de un signo más entre corchetes (+).
    Acción: corrija la sintaxis SQL.
  • ORA-00984: columna no permitida aquí
    Causa: El nombre de la columna se ha utilizado donde no está permitido, como en la cláusula VALUES de una instrucción INSERT.
    Acción: Verifique la sintaxis del comando y use nombres de columna solo donde esté permitido.
  • ORA-00985: nombre de programa no válido
    Causa
    Acción
  • ORA-00986: nombre(s) de grupo faltante o no válido(s) - nombre(s) de grupo faltante o no válido(s)
    Causa: Esta propiedad no está implementada.
    Acción: No se requiere ninguna acción del usuario.
  • ORA-00987: nombre(s) de usuario faltante o no válido(s)
    Causa: El nombre de usuario no se especificó en el comando GRANT o uno de los nombres especificados no es válido. Los nombres de usuario válidos deben aparecer después de la palabra TO en el comando GRANT. Un nombre de usuario válido comienza con una letra, tiene un límite de 30 caracteres y consta solo de letras, números y los caracteres especiales $, _ y #. No debe ser una palabra reservada.
    Acción: Describa un nombre de usuario válido (o una lista de usuarios) después de la palabra clave TO en el comando GRANT.
  • ORA-00988: contraseñas faltantes o no válidas
    Causa: Hay más nombres de usuario que contraseñas en el comando GRANT. Se debe especificar una contraseña válida para cada usuario enumerado en el comando GRANT.
    Acción: Introduzca la contraseña correcta para cada usuario.
  • ORA-00989: demasiadas contraseñas para los nombres de usuario dados
    Causa: Hay más contraseñas que las descritas por los nombres de usuario en el comando GRANT. Solo se debe ingresar una contraseña para cada usuario enumerado en el comando GRANT.
    Acción: Introduzca el mismo número de usuarios y contraseñas.
  • ORA-00990: privilegio faltante o no válido
    Causa: No se declararon privilegios en el comando para otorgar privilegios, o uno de ellos no es válido.
    Acción: Ingrese uno o más privilegios válidos. Se permiten los siguientes privilegios: SELECT, INSERT, DELETE, UPDATE, ALTER, INDEX, DROP, CLUSTER y ALL. Se puede otorgar más de un privilegio ingresándolos en una lista separada por comas (,) o describiendo la palabra TODOS para otorgar todos los privilegios.
  • ORA-00991: formato irreconocible para el comando GRANT
    Causa: Se ingresó una forma no válida del comando GRANT.
    Acción: Verifique la sintaxis del comando Hay dos tipos de comando GRANT. El primer tipo se utiliza para definir el acceso de los usuarios a la base de datos y debe tener el siguiente formato: GRANT CONNECT/RESOURCE/DBA TO<имя пользователя>IDENTIFICADO POR<пароль>. Debe estar presente al menos una de las palabras clave CONNECT, RESOURCE o DBA. El segundo tipo se usa para otorgar privilegios a los objetos de la base de datos y tiene el formato: GRANT<список привелегий>EN<обзор/ таблица>A< индентификатор пользователя>/PÚBLICO.
  • ORA-00992: formato irreconocible para el comando REVOKE
    Causa: Se ingresó una forma no válida del comando REVOKE.
    Acción: compruebe la sintaxis del comando y vuelva a intentarlo.
  • ORA-00993: falta la palabra clave GRANT
    Causa: La opción WITH se declaró al final de un comando GRANT sin una opción GRANT. Para otorgar privilegios a un usuario y permiso para otorgarlos a otros usuarios, use la opción WITH GRANT OPTIO al final de un comando GRANT.
    Acción: Reemplace la palabra clave WITH por WITH GRANT OPTION.
  • ORA-00994: Falta la palabra clave OPTION - Falta la palabra clave OPTIO
    Causa: La opción CON GRANT se usó al final del comando GRANT sin la palabra OPCIÓN.
    Acción: Cambie la clave de CON CONCESIÓN a CON OPCIÓN DE CONCESIÓN.
  • ORA-00995: identificador de sinónimo faltante o no válido
    Causa: En un comando CREATE o DROP SYNONYM, se omitió un nombre de sinónimo o no era válido.
    Acción: compruebe si hay errores tipográficos y sintaxis de comandos. Un nombre de sinónimo válido debe seguir inmediatamente a la tecla SYNONYM en ambos comandos. Un nombre de sinónimo válido comienza con una letra, está limitado a 30 caracteres y consta únicamente de letras, números y los caracteres especiales $, _ y #. No debe ser una palabra reservada.
  • ORA-00996: el operador de concatenación es ¦¦ no ¦ - el operador de concatenación es ||, no |
    Causa: El trazo único (|) se entendió como un intento de describir la concatenación, pero el operador de concatenación consta de dos trazos (||).
    Acción: Introduzca un trazo doble para la operación de concatenación o elimine un solo trazo si no se necesita la concatenación.
  • ORA-00997: uso ilegal de tipo de datos largo
    Causa: ha utilizado el tipo de datos LONG, que se utiliza para almacenar datos de más de 240 caracteres, en una función o en las cláusulas WHERE, GROUP BY, ORDER BY. El valor LONG solo se puede usar en una cláusula SELECT.
    Acción: Elimina este campo de la función u oferta.
  • ORA-00998: debe nombrar esta expresión con una etiqueta de columna
    Causa: Se usó una función o expresión en el comando CREATE VIEW, pero no se declaró el nombre de la columna correspondiente. Cuando se utiliza una expresión o función para una vista, todos los nombres de columnas y vistas deben enumerarse correctamente en el comando CREATE VIEW.
    Acción: Ingrese todos los nombres de las columnas de revisión entre paréntesis después del nombre de la revisión.
  • ORA-00999: nombre de vista no válido.
    Causa: Falta el nombre de la vista o no es válido en el comando CREAR VISTA.
    Acción: Introduzca un nombre de vista válido inmediatamente después de CREAR VISTA. Un nombre de navegación válido comienza con una letra, está limitado a 30 caracteres y consta solo de letras, números y los caracteres especiales $,_ y #. No debe ser una palabra reservada.