ORA-01555 — не автоматический диагноз «плохой SQL»
ORA-01555 — не автоматический диагноз «плохой SQL» Отчёт выполнялся больше часа и завершился ошибкой: ORA-01555: snapshot too old Для consistent read Oracle может использовать undo, чтобы восстановить версию данных, соответствующую точке чтения запроса. Если нужные undo-записи стали недоступны до того, как отчёт ими воспользовался, возникает snapshot too old. Проверять нужно сочетание: — длительность запроса; — параллельный DML; — массовые UPDATE, DELETE и загрузки; — размер undo tablespace; — настройки и фактическое retention; — расписание batch-задач; — скорость генерации undo. UNDO_RETENTION может быть частью решения, но не является гарантией сам по себе. Без достаточного пространства и оценки нагрузки одного параметра может не хватить. Ветки для диагностики: — ускорить запрос; — сократить обрабатываемый диапазон; — развести отчёт и массовые изменения по времени; — пересмотреть undo; — изменить архитектуру длительной отчётности. Типичная ошибка — менять только SQL или только параметр, не восстановив контекст инцидента. Вывод: при ORA-01555 анализируйте не одну команду, а окно согласованного чтения и нагрузку, которая расходует undo. Сохраните список вопросов для разбора долгих отчётов и выгрузок, которые падают на consistent read. #УЦФОРС #Oracle #DBA #АдминистрированиеБД #SQL