Recentemente, recebemos alguns erros em nosso registro de alertas do formulário
301598: Tue Jul 16 03:58:29 2013
301599: ORA-01555 caused by SQL statement below
301600: SELECT * FROM RELATIONAL(<owner>.<table>)
Eu sei como lidar com erros ORA-01555, mas nunca encontrei algo parecido SELECT * FROM RELATIONAL
. Eu olhei DBA_OBJECTS
, mas não existe essa função / operador / qualquer coisa.
A pesquisa no Google 'SELECT * FROM RELACIONAL' retornou apenas perguntas relacionadas ao ORA-01555.
Então, minha pergunta é: Qual é o significado da palavra-chave RELACIONAL aqui?
relational
é uma palavra muito difícil de pesquisar na documentação do banco de dados.Respostas:
Parece estar inerte. Testei isso no XE 11 e descobri que não faz nada.
fonte
Acredito que esse foi um alias descontinuado da função TABLE de hoje para funções em pipeline, mas agora não consigo encontrar minha referência que diz isso.
fonte
De acordo com este artigo do blog, a dica específica
RELATIONAL
instrui o Query Optimizer aUm segundo artigo na Comunidade Oracle afirma que
Eu acho que isso é apenas um problema de uma consulta de longa execução, que está sendo exposta pelo erro ORA-01555 enquanto usa internamente uma dica de consulta, que não é documentada.
fonte
Como demonstrado por durette, esse elenco é inútil. A maioria das tabelas é RELACIONAL, e esse é o padrão. No entanto, o Oracle também suporta tabelas OBJECT (consulte a sintaxe nos documentos CREATE TABLE do Oracle ), o que explica o motivo da sintaxe interna. Não há motivo para usar RELACIONAL em uma consulta, mas também não há motivo para que ela falhe. Você deve se concentrar nas correções gerais para ORA-01555. ORA-01555 geralmente significa que seus segmentos UNDO não são suficientes para lidar com a taxa de alteração em seu banco de dados.
Você consegue reproduzir esse erro sob demanda? Como o log a consulta incorreta é executada antes de falhar? Ou é sua verdadeira pergunta: "Como localizo o SQL que causou esse erro?"
Além disso, você não especificou sua versão do Oracle e nível de patch.
fonte
A linha abaixo "ORA-01555 causada pela instrução SQL abaixo" é a instrução SQL que está causando a troca do UNDO.
Portanto, RELACIONAL não é algo do Oracle, é um objeto criado por um usuário. É uma função com o parâmetro owner.table.
fonte