В среде Oracle RDBMS журналы повторов содержат файлы в собственном формате, которые регистрируют историю всех изменений, внесенных в базу данных . Каждый файл журнала повторов состоит из записей повторов. Запись повторов, также называемая записью повторов, содержит группу векторов изменений , каждый из которых описывает или представляет изменение, внесенное в отдельный блок в базе данных.
Например, если пользователь UPDATE
вводит значение зарплаты в таблицу, содержащую данные о сотрудниках, СУБД генерирует запись повтора, содержащую векторы изменений, которые описывают изменения в блоке сегмента данных для таблицы. И если пользователь затем COMMIT
вводит обновление, Oracle генерирует еще одну запись повтора и назначает изменению «системный номер изменения» (SCN).
Всякий раз, когда что-то изменяется в файле данных, Oracle записывает изменения в журнал повторов. Название журнала повторов указывает на его цель : если база данных выходит из строя, СУБД может повторно выполнить (повторно обработать) все изменения в файлах данных, что вернет данные базы данных в состояние, в котором они были, когда была записана последняя запись повторов. Администраторы баз данных используют представления V$LOG
, V$LOGFILE
и для поиска информации о журнале повторов базы данных. Каждый файл журнала повторов принадлежит ровно одной группе (из которых должно быть не менее двух). Ровно одна из этих групп является CURRENT группой (ее можно запросить с помощью столбца status v$log). Oracle использует эту текущую группу для записи записей журнала повторов. Когда группа заполнена, происходит переключение журнала , делающее другую группу текущей. Каждое переключение журнала вызывает контрольную точку, однако обратное неверно: контрольная точка не вызывает переключение журнала повторов. Также можно вручную вызвать переключение журнала повторов с помощью команды .V$LOG_HISTORY
V$THREAD
ALTER SYSTEM SWITCH LOGFILE
Файлы журнала повторного выполнения бывают двух типов: [1]
Прежде чем пользователь получит сообщение « Фиксация завершена », система должна сначала успешно записать новые или измененные данные в файл журнала повторного выполнения.
Сначала СУРБД записывает все изменения, включенные в транзакцию, в буфер журнала в системной глобальной области (SGA). Использование памяти таким образом для первоначального захвата направлено на сокращение дискового ввода-вывода. Конечно, когда транзакция фиксируется, буфер журнала повторов должен быть сброшен на диск, поскольку в противном случае восстановление для этого коммита не может быть гарантировано. Процесс LGWR (Log Writer) выполняет эту очистку.
Наличие журнала повторов позволяет воспроизводить SQL-выражения. Перед тем, как база данных Oracle изменит данные в файле данных, она записывает изменения в журнал повторов. Если что-то случится с одним из файлов данных, процедура восстановления может восстановить резервную копию файла данных, а затем воспроизвести повтор, записанный с момента резервного копирования; это возвращает файл данных в состояние, в котором он был до того, как стал недоступным. Резервные базы данных в среде Oracle Data Guard используют ту же технику: одна база данных (основная база данных) записывает все изменения и отправляет их в резервную базу данных (базы данных). Каждая резервная база данных применяет (воспроизводит) полученный повтор, что приводит к синхронизации с основной базой данных. [5]
Если база данных выходит из строя, процесс восстановления должен применить все транзакции, как незафиксированные, так и зафиксированные, к файлам данных на диске, используя информацию в файлах журнала повторов. Oracle должен повторно выполнить все транзакции журнала повторов, которые имеют как и BEGIN
запись COMMIT
(прокрутить вперед), и он должен отменить все транзакции, которые имеют BEGIN
запись, но не имеют COMMIT
записи (откат). [6] (Повторное выполнение транзакции в этом контексте просто означает применение информации в файлах журнала повторов к базе данных; система не перезапускает саму транзакцию.) Таким образом, система повторно создает зафиксированные транзакции, применяя записи «после образа» в файлах журнала повторов к базе данных, и отменяет незавершенные транзакции, используя записи «до образа» в табличном пространстве отмены .
Сбор данных об изменениях может считывать журналы повторного выполнения.
В конфигурациях Oracle Data Guard резервные журналы повторов напоминают эквивалентные им онлайн-журналы повторов, но служат для хранения данных повторов, переданных из другой базы данных. [7]
Учитывая многословность журналирования, корпорация Oracle предоставляет методы архивирования журналов повторного выполнения (архивных журналов), которые, в свою очередь, могут использоваться в сценариях резервного копирования данных и резервных базах данных .
Существование подробной серии индивидуально зарегистрированных транзакций и действий обеспечивает основу для нескольких улучшений управления данными, таких как Oracle Flashback , log-mining и point-in-time recovery . Концепция воплощения базы данных [8] может влиять на использование повтора при восстановлении базы данных.
Для настройки базы данных и эффективной обработки журналов повторного выполнения требуется большой и быстродоступный диск.
Я упомянул два типа файла журнала повторного выполнения: онлайн и архивный.
Резервные журналы повторов (SRL) на сайте аварийного восстановления действуют как аналог онлайн-журналов повторов (ORL) основной базы данных и позволяют удаленному сайту получать повторы более эффективно.
Текущий журнал повторов всегда находится в сети, в отличие от архивных копий журнала повторов. Поэтому онлайн-журнал повторов обычно называют просто журналом повторов.
[...] когда происходит переключение журнала, содержимое текущего журнала повторов записывается в архивный журнал повторов процессом ARCn. Эти журналы также называются автономными журналами повторов или просто архивными журналами.
Первичная и физическая резервные базы данных синхронизируются с помощью службы Redo Apply , которая восстанавливает данные повтора из первичной базы данных и применяет их к резервной базе данных. [...] Синхронизация между первичной и [логической] резервной базами данных достигается с помощью службы SQL Apply, которая преобразует данные повтора из первичной базы данных в операторы SQL, а затем выполняет операторы SQL в резервной базе данных.
Восстановление экземпляра состоит из двух фаз: откат вперед и откат назад.
Резервный журнал повторов похож на онлайн-журнал повторов, за исключением того, что резервный журнал повторов используется для хранения данных повторов, полученных из другой базы данных.
Согласно документации Oracle, воплощение представляет собой отдельную версию базы данных.