Oracle DBA Forum  

Вернуться   Oracle DBA Forum > Oracle University Official Study Notes (RUS) > База данных Oracle 10g Администрирование > База данных Oracle 10g Администрирование I

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 24.09.2009, 15:14
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию 09 Управление информацией отмены

__________________
Телеграм чат
Ответить с цитированием
  #2  
Старый 24.09.2009, 15:15
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Рассматриваемые вопросы

__________________
Телеграм чат
Ответить с цитированием
  #3  
Старый 24.09.2009, 15:16
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Манипулирование данными



Манипулирование данными

Класс команд DML языка SQL включает команды INSERT, UPDATE, DELETE и MERGE, с помощью которых производится обработка или манипулирование данными. Эти команды выполняются как часть транзакции, начинающейся первой успешно отработавшей командой DML и заканчивающейся либо командой COMMIT, либо ROLLBACK. Транзакция или полностью фиксируется, или полностью откатывается.

Откат может также произойти в случае сбоя процесса или системы. Примечание. Команда MERGE производит операции вставки и изменения для объединения данных одной таблицы, переносимых в другую таблицу. Эта команда рассматривалась в уроке "Сопровождение данных и одновременный доступ".
__________________
Телеграм чат
Ответить с цитированием
  #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).

Информация отмены может удерживаться и дольше. Это зависит от интенсивности выполняемых операций и конфигурации базы данных.
__________________
Телеграм чат
Ответить с цитированием
  #5  
Старый 24.09.2009, 15:19
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Транзакции и данные отмены



Транзакции и данные отмены

Когда транзакция начинается, ей назначается сегмент отмены (undo segment). Во время жизни транзакции перед любыми выполняемыми ею изменениями первоначальные значения данных копируются в сегмент отмены. Каким транзакциям какие сегменты отмены назначены, можно выяснить, запросив информацию из динамического представления производительности v$transaction.

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

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

Примечание: Параллельные операции DML могут сопровождаться ситуацией, когда одна транзакция использует несколько сегментов отмены. Дополнительные сведения о параллельном выполнении команд DML см. в документе Oracle Database Administrator's Guide 10g.
__________________
Телеграм чат
Ответить с цитированием
  #6  
Старый 24.09.2009, 15:20
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Хранение информации отмены



Хранение информации отмены

Сегменты отмены могут существовать только табличном пространстве специального вида (с типом undo). Несмотря на то, что у базы данных может быть много табличных пространств типа undo, каждый экземпляр может открывать только одно пространство такого вида.

У сегментов отмены тип "TYPE2 UNDO" и они всегда принадлежат пользователю SYS. Поскольку сегменты отмены выступают в качестве циклических буферов, каждый сегмент отмены должен иметь, по крайней мере, два экстента. Хотя по умолчанию максимальное число экстентов зависит от размера блока базы данных, оно очень высокое (32765 для блока размером 8 К).

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

Вопросы восстановления табличных пространств отмены будут рассмотрены в главе "Восстановление базы данных".
__________________
Телеграм чат
Ответить с цитированием
Ответ
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 16:01. Часовой пояс GMT +3.


Powered by vBulletin®