Oracle Soft and Bug Corruption. В очередной раз об ошибке ORA-00600. Часть 4. Soft Corruption

dbstalker, 15 сентября

Предыдущий пост на эту тему. Продолжим.

Блок считается «мягко» поврежденным, если формат блока отличается от оракловского формата. Такая коррупция данных (логическая, программная), обычно обнаруживается при чтении некоторых данных с диска в буферный кеш базы данных.

В буферном кеше, оракл исследует содержимое блока, читает информацию о типе, версии, номере последовательности, контрольной сумме и DBA.

Каждый раз, когда оракл модифицирует данные блока, происходит проверка блока на соответствие. Любые обнаруженные ошибки вызывают внутреннюю ошибку, о которых уведомляется. Оракл по умолчанию не углубляется в содержимое, он только просматривает заголовок блока. Если заголовок не соответствует стандартным правилам и структура блока неправильная, блок считается поврежденным. Тем не менее, это не всегда означает, что блок на самом деле поврежден. Этот факт нужно подтвердить.

Ошибки, указывающие на «мягкую» коррупцию:

ORA-00600: internal error code, arguments: [3339], [RBA1], [RBA2], [], [], [], [], []

Где RBA1 – адрес блока, прочитанный из заголовка блока и RBA2 – реальный физический адрес блока в базе данных. Оракл сделает проверку каждого блока, прочитанного в буферный кеш базы данных. Если содержимое блока является некорректным, тогда будет сгенерировано сообщение об ошибке. Такой блок оракл пометит как soft corrupted, изменит некоторые байты в заголовке блока. Оракл будет пропускать такие блоки, независимо от того, на сколько читаемо их содержимое.

Рассмотрим некоторые ситуации:

ORA-00600: internal error code, arguments: [3339], [0], [15742], [], [], [], [], []

Такая ошибка происходит, когда рассчитанный DBA (реальное физическое расположение блока) и DBA, прочитанный из заголовка блока, не совпадают. Причина различий - результат восстановления операционной системой после краха системы или сбойной обработки ASYNC ввода – вывода.

ORA-00600: internal error code, arguments: [3339], [12222222], [144665742], [], [], [], [], []

Такая ошибка происходит тогда, когда оба адреса (прочитанный и рассчитанный) содержат большие числа. Возможные причины – некорректные записи в заголовке блока (указание на несуществующий блок) по причине неисправности в модулях памяти, или блок является частью большого файла данных (больше чем 2GB), или блок записан в неправильное место.

ORA-00600: internal error code, arguments: [3339], [14237], [15742], [], [], [], [], []

В этом примере оба адреса блока вполне реальные, один адрес из заголовка блока, а другой рассчитан ораклом. Проблема в том, что DBA из заголовка блока имеет смещение от реального правильного адреса в базе данных. Причина может быть в том, что операционная система ошибочно записала в заголовок блока адрес предыдущего блока, который был последним прочитанным в память базы данных. Возможно, экстремально высокая загрузка системы, вынуждающая ОС извлекает неправильный блок с диска, приводит к ошибке чтения.

Продолжение следует…

источник

 

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

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



 

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

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

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

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


 
 

Бизнес форум

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

Революция аромата: Sensa
16 июля, 1 ответа