Данные Отката

Рубрика: Управление Данными Отката

Данные отката:

  • Копия исходных данных до изменения

  • Захватываются для каждой транзакции, которая изменяет данные

  • Сохраняются, по крайней мере, пока транзакция не закончится

  • Используются, чтобы поддерживать:

    • Операции отката

    • Согласованные по чтению запросы

    • Ретроспективный Запрос Oracle, Ретроспективную Транзакцию Oracle и Ретроспективную таблицу Oracle

    • Восстановление после сбойнувших транзакций

Данные Отката

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

Согласованные по чтению запросы обеспечивают результаты, которые являются согласованными с данными, существовавшими во время запуска запроса. Чтобы можно было успешно выполнить согласованный по чтению запрос, исходная информация должна по-прежнему существовать как информация отката. Если исходные данные больше не доступны, Вы получаете ошибку “Снимок слишком старый” (ORA-01555). Пока информация об откате сохраняется, база данных Oracle может восстановить данные, чтобы удовлетворить согласованные по чтению запросы.

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

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

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

Информация об откате сохраняется для всех транзакций, по крайней мере пока транзакции не будут завершены одним из следующих способов:

  • Пользователь отменяет транзакцию (откат транзакции).

  • Пользователь завершает транзакцию (транзакция фиксируется).

  • Пользователь выполняет оператор DDL, такой как CREATE, DROP, RENAME или ALTER . Если текущая транзакция содержит какие-либо операторы DML, база данных сначала фиксирует транзакцию, а затем выполняет и фиксирует DDL как новую транзакцию.

  • Сеанс пользователя завершается неправильно (транзакция откатывается).

  • Сеанс пользователя завершается обычным образом (фиксация транзакции).

Количество данных отката, которые сохраняются, и время, в течение которого они сохраняется, зависит от активности базы данных и конфигурации базы данных.

Отметьте: Ретроспективная Транзакция Oracle использует оперативные журналы транзакций, чтобы построить соответствующие инструкции SQL для отката. Она использует Откат только в качестве искусственной границы времени, чтобы определить начальное время, с которого надо искать целевую транзакцию в журнале транзакций, с тем, чтобы построить обратную к ней транзакцию, если это время не задается при вызове ретроспективной транзакции.

Далее: Архитектура Сервера базы данных Oracle

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)