Показать сообщение отдельно
  #4  
Старый 24.09.2009, 15:18
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Информация отмены



Информация отмены

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

Выполнение запросов может начинаться до изменения данных и заканчиваться после их изменения. Целостность чтения (read-consistent), гарантируемая Oracle, означает, что запросы возвращают данные, согласованные с моментом начала запросов. Для успешного выполнения целостных по чтению запросов необходимо, чтобы первоначальные данные в виде информации отмены были еще доступны. Пока информация отмены удерживается, Oracle может реконструировать данные, необходимые целостным по чтению запросам (read-consistent queries).

Запросы прошлых данных (flashback queries) используют копию данных, соответствующую некоторому моменту в прошлом. Такие запросу могут быть успешно завершены, пока информация отмены прошлых данных все еще существует.

Информация отмены (undo data) также используется для восстановления после аварийно завершившейся транзакции. Это происходит, когда сеанс пользователя завершается ненормально (возможно из-за сетевой ошибки или ошибки на клиентской машине) до того, как пользователь решит зафиксировать (commit) или откатить (roll back ) транзакцию. Аварийно завершившиеся транзакции могут появиться и по причине отказа экземпляра. Во всех таких случаях Oracle выбирает наиболее безопасный путь: отменяет все сделанные пользователем изменения, восстанавливая первоначальные данные.

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

пользователь поменяет свое решение и выполнит откат (rollback);
пользователь завершит транзакцию и зафиксирует изменения данных
(commit);
сеанс пользователя завершится ненормально и выполнится откат (rollback);
пользователь нормально выйдет и его сеанс завершится (commit).

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