ORA-00600: internal error code, arguments: [6006], UNDO

dbstalker, 08 сентября

Есть еще вот такая 600-ая ошибка:

 Errors in file /oracle/admin/test/bdump/test2_smon_21466.trc:
ORA-00600: internal error code, arguments: [6006], [1], [], [], [], [], [], []
SMON: mark undo segment29 as needs recovery

Бурлесон предлагает при получении такого сообщения выполнить следующие действия (алгоритм немного переработан мною):

Определяем поврежденные undo сегменты по статусу “Needs Recovery” по результатам следующего запроса (в нашем случае 29):

select SEGMENT_NAME, STATUS from dba_rollback_segs;

alter system set undo_management=MANUAL scope=both;  
 
create pfile  from spfile; 

Теперь вносим изменения в init.ora:

   *._offline_rollback_segments=” _SYSSMU29$”

   *._corrupted_rollback_segments=”_SYSSMU29$”

Останавливаем экземпляр. Стартуем его, используя исправленный init.ora (startup restrict ?). Создаем новое undo пространство:

create undo tablespace undotbs2 datafile ‘/u02/oracle/oradata/test/undotbs2.dbf’ size 500m;

alter system set undo_tablespace=undotbs2 scope=both;  

alter tablespace undotbs1 offline; 

drop tablespace undotbs1 including contents and datafiles; 

alter system set undo_management=AUTO scope=both;

Shutdown immediate.

Из init.ora забираем параметры _offline_rollback_segments и _corrupt_rollback_segments Стартуем с новым init.ora

Create spfile from pfile;

И дальше работаем.Правила хорошего тона говорят о том, что в этой ситуации лучше пересоздать базу используя експорт-импорт. Потому что есть риск наличия незавершенных транзакций, которым нужен старый undo.

У меня были ситуации, создавался новый undo1, но старый не удалался до тех пор пока он не переходил в статус EXPIRED. Это проверялось запросом :

select SUM(BYTES),tablespace_name,status FROM DBA_UNDO_EXTENTS group by tablespace_name,status

На заметку : Сегменты в EXPIRED статусе - это означает, что они не были перезаписаны новыми данными.Большое количество сегментов в UNEXPIRED статусе - следствии высокого значения параметра undo_retention.

Замечание не по делу. Параметр undo_retention обычно устанавливают равным или больше , чем время выполнения самого длинного запроса

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

Жду с благодарностью замечаний и исправлений от посетителей блога .

 

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

Я не спамер: введите суму 8+2



 

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

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

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

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


 
 

Бизнес форум

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

Шины бу
26 апреля, 2 ответа
Потрібна порада
25 апреля, 2 ответа
Посоветуйте адвоката
25 апреля, 1 ответа