Печать
Категория: Мой блог
Просмотров: 6716

Случилась недавно с базой Oracle довольно неприятная штука. Пришлось прибить долго выполняющееся задание. Всё бы ничего, но оказывается задание выполнялось в довольно длинной транзакции и успело отхапать очень большой сегмент в undo пространстве, процентов 80 от всего undo. Сеанс задания был благополучно уничтожен и в Oracle и на уровне операционной системы сервера. Но undo сегмент бывшего сеанса впал в какое-то интересное состояние. Экстенты сегмента ни в какую ни хотели повторно использоваться. Перезагрузка естественно не помогла. Удаление сегмента с помощью drop rollback segment то же. Команда писала в ответ, что в данном пространстве он не доступен. Пришлось создавать новое undo пространство, и переключаться на него с помощью параметра undo_tablespace. Старое пространство было удалено по истечении некоторого времени, когда перестало использоваться. Как говорится повезло, а то бывают ситуации и похуже. Уж лучше глянуть на размер undo в транзакции до того, как прибить сеанс, чем потом исправлять возникшие неисправности.