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 могут получать блокировки на двух различных уровнях: для конкретных строк и для целых таблиц.