Oracle DBA Forum - 09 Управление на информацията за анулиране
Класът на SQL DML команди включва INSERT, UPDATE, DELETE и MERGE команди, които обработват или манипулират данни. Тези команди се изпълняват като част от транзакция, която започва с първата успешна DML команда и завършва с COMMIT или ROLLBACK. Транзакцията е или напълно ангажирана, или напълно отменена.
Възстановяване може да възникне и в случай на повреда на процес или система. Забележка. Командата MERGE изпълнява операции за вмъкване и актуализиране, за да обедини данни от една таблица в друга таблица. Тази команда беше разгледана в урока за поддръжка на данни и паралелен достъп.
Когато даден процес промени данните в базата данни, Oracle запазва старите стойности (отменяема информация). Той ги запазва във вида, в който са съществували преди модификацията. Запазването на информация за отмяна позволява на потребителите да променят мнението си (връщане назад на промените), както и да изпълняват последователни заявки за четене, съдържащи минали данни.
Изпълнението на заявка може да започне преди промяна на данните и да завърши след промяна на данните. Съгласуваната при четене цялост, гарантирана от Oracle, означава, че заявките връщат данни, които са в съответствие с момента, в който заявките са започнали. Успешното изпълнение на последователни заявки за четене изисква оригиналните данни под формата на информация за отмяна да са все още налични. Докато информацията за отмяна се съхранява, Oracle може да реконструира данните, изисквани от последователни заявки за четене.
Ретроспективните заявки използват копие на данните, съответстващи на някакъв момент в миналото. Такава заявка може да бъде изпълнена успешно, докато все още съществува информация за отмяна на минали данни.
Отмяна на информация същоизползвани за възстановяване от прекратена транзакция. Това се случва, когато сесията на потребителя прекъсне необичайно (може би поради мрежова грешка или грешка на клиентската машина), преди потребителят да реши да извърши (commit) или да върне назад (roll back) транзакцията. Прекратени транзакции могат да възникнат и поради повреда на екземпляра. Във всички подобни случаи Oracle избира най-безопасния път: отменя всички промени, направени от потребителя, като възстановява оригиналните данни.
Информацията за сторниране се съхранява за всички транзакции, поне докато транзакцията приключи след:
потребителят ще промени решението си и ще извърши връщане назад (връщане назад); потребителят ще завърши транзакцията и ще извърши промени в данните (комитиране); потребителската сесия ще приключи необичайно и ще се извърши връщане назад; Потребителят ще излезе нормално и неговата сесия ще приключи (комит).
Информацията за анулиране може да се съхранява по-дълго. Това зависи от интензивността на извършваните операции и конфигурацията на базата данни.