Многоверсионная модель согласованности данных.

Транзакция (Transaction)

Создание групп онлайнового журнала

Можно создать группы онлайнового журнала и как часть создания базы данных, и позднее. Если возможно, спланируйте журнал и создайте все необходимые группы файлов журнала во время создания базы данных. Для создания новой группы онлайнового журнала используйте команду SQL: ALTER DATABASE с параметром ADD LOGFILE. Более подробно см Резервное копирование и восстановление.

Транзакция (модуль фиксации) √ логический модуль, который состоит из набора изменений (вставок, обновлений и удалений). Транзакции либо должны быть сохранены в базе данных, либо должен быть выполнен их откат. Фиксируются либо все изменения в транзакции, либо ни одно из них. Для фиксирования в базе данных результатов транзакции используется команда COMMIT, для восстановления изменённых данных используется команда ROLLBACK.

Транзакция начинается:

  1. Когда пользователь подключается к базе данных и начинает с ней работать.
  2. После выполнения оператора COMMIT.
  3. После выполнения оператора ROLLBACK.

Откат на уровне оператора √ данное понятие означает, что для конкретного оператора либо будут сохранены все внесённые им изменения, либо не будет выполнено ни одно из них.

БЛОКИРОВКИ(LATCH) - это механизмы, используемые для того, чтобы предотвратить деструктивные взаимодействия между пользователями, обращающимися к одному и тому же ресурсу, будь то вся таблица или одна строка в таблице.(V$LATCH)

В многопользовательской базе данных могут применяться два уровня блокировок:

  1. Монопольная блокировка √ запрещает разделение ассоциированного ресурса. Первая транзакция, получившая монопольную блокировку ресурса, становится единственной транзакцией, которая может изменять этот ресурс до снятия монопольной блокировки.
  2. Разделяемая блокировка √ позволяет совместно использовать ассоциированный ресурс, в зависимости от того, какие операции выполняются (например, несколько пользователей могут читать данные одновременно). Несколько транзакций могут получить разделяемые блокировки для одного и того же ресурса.

Захват √ ситуация, которая возникает, когда два или более пользователей ожидают данных, заблокированных друг другом.

ORACLE автоматически распознает ситуации захватов, и автоматически разрешает такие ситуации, осуществляя откат одного из предложений, вовлеченных в захват и тем самым освобождая одно множество конфликтующих блокировок строк.

  1. ORACLE обеспечивает для всех запросов согласованность по чтению на уровне предложения, которая гарантирует, что данные, возвращаемые запросом, согласованы по отношению к моменту начала этого запроса.
  2. ORACLE также предоставляет необязательную возможность согласованности по чтению на уровне транзакции, которая гарантирует, что данные, которые видят все запросы внутри транзакции, согласованы по отношению к одной точке времени (моменту начала транзакции). ORACLE обеспечивает согласованность по чтению на уровне транзакции с помощью двух методов:
  • Транзакции read-only √ могут содержать только запросы и не могут содержать никаких предложений DML (языка манипулирования данными). В течение транзакции её доступны данные, которые были подтверждены к моменту её начала.
  • Монопольные блокировки таблиц и строк. Если повторяемость чтений необходимо обеспечить в транзакциях, содержащих предложения DML, транзакция может явно запросить разделяемые блокировки по таблицам или монопольные блокировки по тем строкам, которые будут считываться неоднократно.

Где:

DDL √ Data Definition Language √ язык содержащий набор операторов для определения данных.

DML √ Data Modifying Language √ язык содержащий набор операторов для модификации данных.

По умолчанию Oracle автоматически блокирует строки, на которые воздействуют операторы INSERT, UPDATE или DELETE; причём блокируются только те строки, на которые фактически оказано воздействие, а не вся таблица или весь блок данных.

Назначение блокировок данных (блокировок DML) - защитить данные таблицы, гарантируя их целостность при одновременном доступе к данным нескольких пользователей. Блокировки данных предотвращают деструктивное взаимодействие одновременных конфликтующих операций DML и операций DDL. Операции DML могут получать блокировки на двух различных уровнях: для конкретных строк и для целых таблиц.