И опять undo. Часный случай победы над проблемой с UNDO

dbstalker, 09 сентября

Описание проблемы :

select segment_name,status,tablespace_name from dba_rollback_segs;
или
select SEGMENT_NAME,SEGMENT_ID,STATUS from dba_rollback_segs;

SEGMENT_NAME SEGMENT_ID STATUS
------------------------------ ---------- ----------------
_SYSSMU1$ 1 NEEDS RECOVERY
_SYSSMU2$ 2 NEEDS RECOVERY
_SYSSMU3$ 3 NEEDS RECOVERY
_SYSSMU4$ 4 NEEDS RECOVERY

Вот схема решения этой проблемы, проверенной нами на практике:

Удаление undo–сегмента не проходит:

drop rollback segment "_SYSSMU1$"
  
ORA-30025: DROP segment '_SYSSMU1$' (in undo tablespace) not allowed

Выставляем ini.ora параметры

undo_management=MANUAL
_corrupted_rollback_segments = ( _syssmu1$, _syssmu2$, _syssmu3$, _syssmu4$)

Перестартуем экземпляр(STARTUP MOUNT RESTRICT;alter database open;). Создаем новое undo – пространство и делаем его пространством отмены по умолчанию. Уже можно удалять сегменты:

CREATE UNDO TABLESPACE undotbs2 DATAFILE 'c:\oradata\undotbs02.dbf' SIZE 2M AUTOEXTEND OFF;
ALTER SYSTEM SET UNDO_TABLESPACE = undotbs2;
drop rollback segment "_SYSSMU1$";
.......

После удаления всех поврежденных undo – сегментов можно удалит старое UNDO:


drop tablespace UNDOTS including contents and datafiles; 

Обратите внимание, что выставлен параметр _corrupted_rollback_segments , а не _offline_rollback_segments . Это важно. Так как если старое undo удалять при выставленном _offline_rollback_segments , то могут быть в дальнейшем проблемы с фоновым прочессом SMON. Этот процесс регулярно будет хотеть восстановить удаленные сегменты.

Попытаться побороть проблемы с процессом SMON можно следующим образом:

Внести в init.ora вот эти строчки

*.event = '10510 trace name context forever, level 10'
*.event = '10511 trace name context forever, level 10'
*.event = '10512 trace name context forever, level 10'
*.event='10231 trace name context forever, level 10'
*.event='10233 trace name context forever, level 10

Тогда , возможно, SMON не будет иметь притязаний на удаленные undo сегменты.

Небольшое пояснение

10510 - turn off SMON check to offline pending offline rollback segment
10511 - turn off SMON check to cleanup undo dictionary
10512 - turn off SMON check to shrink rollback segments

И это все. Перегружаемся и можно работать. Будут замечания?

Хочу добавить небольшое замечание. Лучше, наверное, поступить следующим образом: старое пространство отмены перевести в оффлайн, создать новое пространство достаточного размера и сделать его пространством отмены по умолчанию. Если база данных открывается и работает без проблем, то на этом закончить. Ждать когда старое undo не будет нужно. И только после его сделать DROP.

Тэги: UNDO, ошибки

ОднаКнопка

 

Новый комментарий

Я не спамер: введите суму 0+3



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Расписание автобусов
18 июля, 3 ответа
Отдых в августе
17 июля, 4 ответа