Recientemente recibimos algunos errores en nuestro registro de alertas del formulario
301598: Tue Jul 16 03:58:29 2013
301599: ORA-01555 caused by SQL statement below
301600: SELECT * FROM RELATIONAL(<owner>.<table>)
Sé cómo manejar los errores de ORA-01555, pero nunca encontré algo así SELECT * FROM RELATIONAL
. Miré dentro DBA_OBJECTS
, pero no existe tal función / operador / lo que sea.
Buscar en Google 'SELECCIONAR * DE RELACIONAL' solo devolvió preguntas relacionadas con ORA-01555.
Entonces, mi pregunta es: ¿Cuál es el significado de la palabra clave RELACIONAL aquí?
relational
es una palabra muy difícil de buscar en la documentación de la base de datos.Respuestas:
Parece ser inerte. Probé esto en XE 11 y descubrí que no hace nada.
fuente
Creo que este fue un alias en desuso para la función TABLE de hoy para las funciones canalizadas, pero ahora no puedo encontrar mi referencia que diga esto.
fuente
De acuerdo con este artículo del blog, la sugerencia específica
RELATIONAL
indica al Optimizador de consultas queUn segundo artículo en la Comunidad Oracle afirma que
Creo que esto es solo un problema de una consulta de larga duración, que está siendo expuesta por el error ORA-01555 mientras usa internamente una sugerencia de consulta, que no está documentada.
fuente
Como lo demostró durette, este es un elenco inútil. La mayoría de las tablas son RELACIONALES, y ese es el valor predeterminado. Sin embargo, Oracle también admite tablas OBJECT (consulte la sintaxis en los documentos CREATE TABLE de Oracle ), lo que explica la razón de la sintaxis interna. No hay ninguna razón para usar RELATIONAL en una consulta, pero tampoco hay razón para que falle. Debería centrarse en las soluciones generales para ORA-01555. ORA-01555 generalmente significa que sus segmentos UNDO no son suficientes para manejar la tasa de cambio en su base de datos.
¿Puede reproducir este error a pedido? ¿Cómo se ejecuta la consulta ofensiva antes de que falle? ¿O es su verdadera pregunta, "¿Cómo puedo rastrear el SQL que causó este error?"
Además, no especificó su versión de Oracle y el nivel de parche.
fuente
La línea debajo de "ORA-01555 causada por la instrucción SQL a continuación" es la instrucción SQL que hace que UNDO se intercambie.
Entonces RELACIONAL no es una cosa de Oracle, es un objeto creado por un usuario. Es una función con el parámetro owner.table.
fuente