ORA-01555: Snapshot too old: слишком маленький номер сегмента отката
OracleЧто это значит?
Длительный запрос не смог получить старые данные undo, необходимые для построения согласованного по чтению образа на момент его начала, поскольку эта информация undo была перезаписана.
Почему возникает?
Маленькое табличное пространство undo, короткий UNDO_RETENTION, длительные запросы при очень интенсивном параллельном DML или цикл, выполняющий commit по той же таблице внутри запроса (fetch across commit).
Как исправить
Увеличьте UNDO_RETENTION и расширьте табличное пространство undo; по возможности оставьте его под автоматическим управлением (AUTOEXTEND on). Разбейте длинные запросы на более мелкие части или выполняйте их вне пиковых часов. Рассмотрите RETENTION GUARANTEE: ALTER TABLESPACE undotbs1 RETENTION GUARANTEE. Исправьте логику приложения, выполняющую commit внутри цикла.
Ещё по этой СУБД
- ORA-00054Ресурс занят, а захват запрошен с NOWAIT, или истёк тайм-аут
- ORA-00060Обнаружена взаимоблокировка при ожидании ресурса
- ORA-01017Неверное имя пользователя/пароль; вход запрещён
- ORA-01652Не удаётся расширить временный сегмент на N в табличном пространстве
- ORA-04031Не удаётся выделить N байт разделяемой памяти
- ORA-12154TNS: не удалось разрешить указанный connect identifier
- ORA-12514TNS: listener в данный момент не знает службу, запрошенную в connect descriptor