Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Ведение журнала, обработка транзакций и восстановление данных в Oracle




Изменения, внесенные экземпляром, сохраняются серверным процессом в журнальном буфере, который является частью SGA. Журнальный буфер содержит информацию о строках, значения которых изменяются, то есть данные об измененном блоке, расположении изменений и новом значении. Журнальная запись регистрирует изменение, но не идентифицирует тип блока, который был изменен. Таким образом, например, изменение в блоке данных не может быть отделено от изменения индекса или блока отката.

Журнальный буфер используется последовательно, поэтому запись об изменениях, осуществленных одной транзакцией, может чередоваться с изменениями, выполненными другой.

Этот буфер используется «по кругу» вновь после заполнения, но только после того, как все предыдущие записи журнала сохранены в журнальных файлах.

Перед внесением изменений серверный процесс сохраняет старые значения в сегменте отката, взаимодействие с которым наглядно показано на рис. 4.8.5.

 

Рис. 4.8.5. Запись изменённых данных в сегмент отката.

 

Созданный образ данных используется для отмены изменений в случае отката транзакции, запрещения доступа других транзакций к незафиксированным изменениям, а также для восстановления базы данных в корректное состояние после сбоя.

Сегменты отката, как таблицы и индексы, содержатся в файлах данных, а их блоки переносятся в кеш буферов базы данных при необходимости. Изменения в сегментах отката записываются в журнальный буфер.

Oracle использует механизм быстрой фиксации транзакции, который гарантирует, что зафиксированные изменения могут быть восстановлены в случае сбоев.

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

Фиксация транзакции выполняется следующим образом. Серверный процесс помешает в журнальный буфер запись о фиксации вместе с SCN. Затем фоновый процесс LGWR выполняет последовательную запись в журнальный файл всех данных журнального буфера, включая саму запись о фиксации, как показано на рис. 4.8.6.

 

Рис. 4.8.6. Механизм быстрой фиксации транзакций в Oracle.

 

Теперь сервер Oracle может гарантировать, что изменения не будут потеряны даже в случае сбоев, а пользователь получает сообщение о том, что транзакция зафиксирована, только после того, как он перепишет журнальные записи в журнальные файлы.

Серверный процесс регистрирует информацию, указывающую на то, что транзакция зафиксирована и блокировки ресурсов могут быть сняты. Затем перенос модифицированных буферов в файл данных производится процессом DBW0 независимо и может произойти как до, так и после фиксации.

Как преимущество следует отметить, что последовательная запись в журнальные файлы быстрее, чем запись в различные блоки файлов данных. В журнальные файлы помещается только минимум информации необходимой для сохранения изменений, тогда как при использовании файлов данных потребовалась бы запись целых блоков.

Процесс фиксации транзакции базы данных вкладывает в одну запись строки журнала, относящиеся к различным транзакциям, одновременно требующих фиксации.

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

Для того, чтобы освободить ресурсы после сбоев процессов, соответствующий фоновый процесс (PMON) откатывает назад текущие транзакции пользователей, снимает все текущие блокировки таблиц и записей, а также освобождает другие ресурсы, которые были зарезервированы пользователем.

В кеше буферов серверный процесс собирает изменения, внесенные в откат и блоки данных. Процесс записи в базу данных (DBW0) записывает модифицированные буферы из кеша буферов базы данных в файлы данных.

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

Существует два режима функционирования БД: без архивирования, когда не требуется восстановление после дисковых сбоев, и с архивированием – для промышленных БД.

Специальный фоновый процесс ARC0 автоматически архивирует журнальные файлы и сохраняет записи обо всех изменениях в БД. Как только текущие журнальные файлы заполнятся, Oracle начинает писать в следующие доступные журнальные файлы. Этот процесс называется переключением.

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

Для базы данных, сконфигурированной в режиме с архивированием, неактивная группа заполненных журнальных файлов должна быть архивирована перед повторным использованием. Используя сохраненные копии файлов базы данных и архивные журнальные файлы, администратор может восстановить БД на любой момент времени, даже в случае выхода из строя дисков.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных