18 ноября 2010 г.

ORACLE 8i, ORA-01555


В ORACLE 8i используются сегменты отката (ROLLBACK SEGMENTS) и ручное управление информацией отката. В табличном пространстве, обычно это PSAPROLL, находятся сегменты отката (типичные имена PRS_0, PRS_1, ...). Данные сегменты используются для отката/восстановления транзакций, обеспечения целостности чтения из базы (блоков данных, которые в данный момент времени изменяются) и для команд чтения данных на предыдущий момент времени. Количество сегментов отката можно посмотреть через транзакцию DB02. Все сегменты отката прописаны в профиле init<SID>.ora. Если меняете их количество, то не забудьте внести изменения в профиль.

Если возникает дамп в системе, который ссылается на ошибку СУБД ORA-01555 (ORA-01555: snapshot too old: rollback segment number <rbs_nr> with name "<rbs>" too small), то это про них, родимых.

Привожу список полезных SAP note по этой теме:


Если возникает именно ORA-01555, то стоит обратить внимание на параметр OPTIMAL у ROLLBACK SEGMENTS. Мне правильное выставление его позволило увеличить время хранения информации в ROLLBACK SEGMENTS с 3 до 6 часов. Частота дампов с ошибкой ORA-01555 резко уменьшилась. Порядок и SQL-запросы для пересоздания сегментов отката можно найти в вышеуказанных нотах.

Начиная с ORACLE 9i, сегменты отката (ROLLBACK SEGMENTS) переименованы в сегменты отмены (UNDO SEGMENTS) и появилось автоматическое управление данными сегментами. Задача администратора в этом случае сводится к активации/мониторингу этого режима и создании/поддержании UNDO табличного пространства достаточного размера.

Автор: Шиболов Вячеслав Анатольевич


Комментариев нет:

Отправить комментарий