РТЫ 03113 при выполнении запроса SQL

У меня есть 400 запросов SQL строки, которые бросают скручивание жгутов исключения 30 секунд

РТЫ 03113: конец файла на канале передачи

Ниже вещи отметить:

  1. Я установил тайм-аут как 10 минут
  2. Существует одно последнее условие когда удаленная твердость эта ошибка.
  3. Эта ошибка прибыла только недавно, когда я проанализировал индексы.

Беспокоящееся условие похоже на это:

AND UPPER (someMultiJoin.someColumn) LIKE UPPER ('%90936%')

Таким образом, мое предположение - то, что запрос становится завершенным от стороны сервера, по-видимому, потому что его идентифицированный как пожиратель ресурсов.

Действительно ли мое предположение является соответствующим? Как я должен пойти собирающийся решить эту проблему?

Править: Я пытался получить объяснить план дефектного запроса, но объяснить запрос плана также дает мне РТЫ 03 113 ошибок. Я понимаю, что мой запрос не очень производителен, но почему это должно быть причиной РТОВ 03 113 ошибок. Я пытаюсь выполнить запрос от жабы и нет никакого журнала предупреждений или не прослеживает сгенерированный, моей версией дб является выпуск 9.2.0.7.0 Oracle9i Enterprise Edition - Производство

8
задан Ravi Gupta 30 July 2010 в 06:44
поделиться

7 ответов

Это означает, что вас отключили. Вряд ли это из-за того, что вы тратите много ресурсов.

Я видел, когда соединение с БД выполняется через NAT, и из-за отсутствия трафика он закрывает туннель и, таким образом, разрывает соединение. Обычно, если вы используете пул соединений, вы этого не получите.

0
ответ дан 5 December 2019 в 15:17
поделиться

Как сказал @Daniel, сетевое соединение с сервером прерывается. Вы можете взглянуть на Конец файла на канале связи , чтобы узнать, есть ли в нем какие-либо полезные предложения.

Делитесь и наслаждайтесь.

0
ответ дан 5 December 2019 в 15:17
поделиться

Один из возможных Причина этой ошибки - сбой потока на стороне сервера. Проверьте, создал ли сервер Oracle какие-либо файлы трассировки или зарегистрировал ли какие-либо ошибки в своем журнале предупреждений.

Вы говорите, что удаление одного условия из запроса устраняет проблему. Как долго выполняется запрос без этого условия? Проверяли ли вы планы выполнения для обеих версий запроса, чтобы увидеть, не приводит ли добавление этого условия к выбору неэффективного плана?

5
ответ дан 5 December 2019 в 15:17
поделиться

Судя по имеющейся информации, это похоже на внутренний сбой, как предположил Дэйв Коста некоторое время назад. Удалось ли вам проверить журналы сервера?

Можете ли вы получить план с , установив автоматическую трассировку только с объяснением ? Это происходит из SQL * Plus локально или только при удаленном подключении? Конечно, похоже, что виновником может быть ORA-600 на сервере, особенно если он находится во время синтаксического анализа. Кажется, что успешный запуск занимает больше времени, чем неудачный, что исключает проблему с сетью. Я подозреваю, что это происходит довольно быстро, но клиенту требуется до 30 секунд, чтобы отказаться от неработающего соединения, или сервер так долго записывает файлы трассировки и файлы ядра.

Что, вероятно, оставляет вам возможность внести исправления (если вы можете найти соответствующее исправление для конкретного ORA-600 на Metalink) или обновить БД; или переписав запрос, чтобы этого избежать. Вы можете получить некоторые идеи о том, как это сделать, в Metalink, если это известная ошибка. Если вам повезет, это может быть просто подсказка, если дополнительное условие оказывает неожиданное влияние на план. Является ли someMultiJoin.someColumn частью индекса, который используется в успешной версии? Возможно, ВЕРХНИЙ сбивает его с толку, и вы могли бы убедить его вернуться к успешному плану, намекнув ему все равно использовать индекс, но это, очевидно, довольно спекулятивно.

1
ответ дан 5 December 2019 в 15:17
поделиться

Часто это ошибка оптимизатора на основе затрат со сложными запросами.

Что вы можете сделать, так это изменить план выполнения. Например. используйте WITH , чтобы извлечь некоторые подзапросы. Или используйте подсказку SELECT / * + RULE * /, чтобы запретить Oracle использовать CBO. Также помогает сброс статистики, потому что затем Oracle использует другой план выполнения.

Если вы можете обновить базу данных, выполните тестовую установку 9.2.0.8 и посмотрите, исчезла ли там ошибка.

Иногда помогает сделать дамп схемы, отбросить все в нем и снова импортировать дамп.

0
ответ дан 5 December 2019 в 15:17
поделиться

У меня были похожие проблемы с разрывом соединения с некоторыми вариантами запроса. В моем случае при определенных обстоятельствах при использовании rownum соединения прерывались. Оказалось, что это ошибка, которую можно было исправить, изменив определенный параметр конфигурации Oracle Database. Мы нашли обходной путь, пока не удалось установить патч. Хотел бы я вспомнить больше подробностей или найти старый адрес электронной почты по этому поводу, но я не знаю, помогут ли подробности решить вашу проблему. Я публикую это просто, чтобы сказать, что вы, вероятно, столкнулись с ошибкой, и если у вас есть доступ к сайту поддержки Oracle (support.oracle.com), вы, вероятно, обнаружите, что другие сообщили об этом.

Изменить: Я быстро ознакомился с поддержкой Oracle. Существует более 1000 ошибок, связанных с ORA-03113, но я нашел одну, которая может быть применима:

Ошибка 5015257: ОТКАЗ ЗАПРОСА С ORA-3113 И COREDUMP, КОГДА QUERY_REWRITE_ENABLED = 'TRUE'

Подводя итог:

  • Выявлено в 9.2.0.6.0 и исправлено в 10.2.0.1
  • Выполнение определенного запроса (не идентифицировано) вызывает ORA-03113
  • Запуск объяснения по запросу то же
  • Есть файл ядра в $ ORACLE_HOME / dbs
  • Необходимо установить временное решение QUERY_REWRITE_ENABLED на false: изменить системный набор query_rewrite_enabled = ЛОЖЬ;

Другая возможность:

Ошибка 3659827: ORA-3113 ОТ ДЛИННОГО ЗАПУСКА

  • с 9.2.0.5.0 по 10.2.0.0
  • Проблема: у клиента есть длительный запрос, который постоянно выдает ошибки ORA-3113.
    В системе клиентов они получают файлы core.log, но не получают никаких ошибок. в alert.log. На тестовой системе я получил ошибки ORA-7445.
  • Временное решение: установите "_complex_view_merging" = false на уровне сеанса или экземпляра.
3
ответ дан 5 December 2019 в 15:17
поделиться

Вы можете безопасно удалить «ВЕРХНИЙ» в обеих частях, если вы используете например с числами (без учета регистра), это может сократить время запроса на проверку аналогичного предложения

AND UPPER (someMultiJoin.someColumn) LIKE UPPER ('%90936%')

Равно:

AND someMultiJoin.someColumn LIKE '%90936%'

ВЕРХНИЙ не влияет на числа (а% не зависит от регистра символов).

2
ответ дан 5 December 2019 в 15:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: