18 февраля 2011 г.

oracle: transaction level SERIALIZABLE

Уровни изолированности транзакций
Это самая высокая степень изолированности, имитация однопользовательской среды. Для транзакции база данных выглядит как моментальный снимок. Все изменения проведенные другими транзакциями не видны. В Oracle это реализовано путем распространения согласованности по чтению на уровне оператора на уровень транзакции. То есть из сегментов отката ORACLE восстанавливает данные не на начало оператора, а на начало транзакции. Но есть один неприятный момент: при попытке обновления строки измененной после начала транзакции будет получена ошибка ORA-08177.

ses1> set transaction isolation level serializable;
ses2> update t set user_id='200' where username='SYS';
ses1> update t set user_id='100' where username='SYS';
ses1 зависает
ses2> commit;
ses1> развисает с ошибкой
ORA-08177: can't serialize access for this transaction


Комментариев нет:

Отправить комментарий