Функции систем управления базами данных (субд)

Архивирование

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

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

Реализации[ | код]

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

Oracle Database | код

В Oracle Database используются журналы изменений двух видов: циклический оперативный журнал повтора (redo log) и архивный журнал повтора (archive log), в которой переносятся записи из первого журнала при прохождении полного цикла первого. Оба журнала записываются на постоянный носитель, в оперативный журнал данные об операции попадают в момент перед фиксацией данных на энергонезависимом носителе, архивный журнал работает только в особом режиме поддержки журнального архивирования базы данных (archivelog). Информация из журналов изменений не используется для отката транзакции, но применяется для восстановления. Процесс восстановления производится администратором с использованием резервной копии базы данных и последовательного приложения к ней архивных журналов и журналов повтора.

Информация для отката (журнал отката, undo log) группируется в сегменты отката, обслуживаемые табличными пространствами специального типа. Для этих данных также ведётся журнал повтора, то есть, они защищены таким же образом, как прочие данные в базе. В случае отката журнал используется для восстановления записи изменяемой транзакции. Кроме того, информация из журнала отката используется для поддержания целостности по чтению для обеспечения доступа к снимку данных, сделанному в момент выборки.

Informix | код

В СУБД Informix журнал изменений представляет из себя дисковое пространство, разделённое на части, называемые файлами журнала транзакций (эти файлы не имеют ничего общего с файлами на файловой системе) или логическим журналом. Запись изменений в этот журнал зависит от того, в каком режиме находится база данных — без журналирования, с буферизованным журналированием или с небуферизованным. Все изменения сначала попадают в буфера логического журнала, а дальнейший сброс их в журнал транзакций зависит от режима журналирования базы данных.

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