Недавно в нашем журнале оповещений появилось несколько ошибок
301598: Tue Jul 16 03:58:29 2013
301599: ORA-01555 caused by SQL statement below
301600: SELECT * FROM RELATIONAL(<owner>.<table>)
Я знаю, как обрабатывать ошибки ORA-01555, но я никогда не сталкивался с чем-то вроде SELECT * FROM RELATIONAL
. Я заглянул внутрь DBA_OBJECTS
, но такой функции / оператора / чего бы то ни было нет.
Поиск в Google для «SELECT * FROM RELATIONAL» вернул только вопросы, связанные с ORA-01555.
Итак, мой вопрос: что означает здесь ключевое слово RELATIONAL?
relational
, это очень трудное слово для поиска документации по БД.Ответы:
Это кажется инертным. Я проверил это на XE 11 и обнаружил, что он ничего не делает.
источник
Я считаю, что это устаревший псевдоним сегодняшней функции TABLE для конвейерных функций, но сейчас я не могу найти свою ссылку, которая говорит об этом.
источник
Согласно этой статье блога, конкретный совет
RELATIONAL
указывает оптимизатору запросов:Вторая статья в Oracle сообществе утверждает , что
Я думаю, что это просто проблема долго выполняющегося запроса, который обнаруживается ошибкой ORA-01555 при внутреннем использовании подсказки запроса, которая не документирована.
источник
Как продемонстрировал durette, это бесполезный актерский состав. Большинство таблиц являются ОТНОСИТЕЛЬНЫМИ, и это по умолчанию. Однако Oracle также поддерживает таблицы OBJECT (см. Синтаксис в документации Oracle CREATE TABLE ), что объясняет причину внутреннего синтаксиса. Нет никаких причин использовать RELATIONAL в запросе, но также нет причин для его сбоя. Вы должны сосредоточиться на общих исправлениях для ORA-01555. ORA-01555 обычно означает, что ваши сегменты UNDO недостаточны для обработки скорости изменения в вашей базе данных.
Вы можете воспроизвести эту ошибку по требованию? В каком журнале выполняется ошибочный запрос до его сбоя? Или ваш реальный вопрос: «Как мне отследить SQL, вызвавший эту ошибку?»
Кроме того, вы не указали свою версию Oracle и уровень исправления.
источник
Строка ниже «ORA-01555, вызванная оператором SQL ниже», является оператором SQL, вызывающим замену UNDO.
Таким образом, RELATIONAL - это не вещь Oracle, это объект, созданный пользователем. Это функция с параметром owner.table.
источник