Показаны сообщения с ярлыком transaction. Показать все сообщения
Показаны сообщения с ярлыком transaction. Показать все сообщения

20 декабря 2011 г.

oracle: Мониторинг отката транзакции

Если по какой то причине сделали rollback транзакции, то интересно как долго он будет выполнятся. Оценить это можно сделав запросы к v$transaction.

В этом представлении есть два поля USED_UREC и USED_UBLK.
USED_UREC - Number of undo records used
USED_UBLK - Number of undo blocks used

Во время rollback значения этих полей уменьшается и стремится к нулю, т.е. rollback закончится, когда значения этих полей станут равны нулю.

Запросы для мониторинга:

select * from v$transaction;

-- конкрето поля USED_UREC и USED_UBLK
SELECT a.sid, a.username, b.xidusn, b.used_urec, b.used_ublk
  FROM v$session a, v$transaction b
  WHERE a.saddr = b.ses_addr;

4 августа 2011 г.

oracle: Транзакции

Transactions

Выдержки из Тома Кайта.

Транзакции в Oracle удовлетворяют всем требуемым характеристикам  ACID.
Аббревиатура ACID   означает:
•   атомарность (atomicity) — выполняется либо вся транзакция целиком, либо она целиком не выполняется;
•   согласованность (consistency) — транзакция переводит базу данных из одного согласованного состояния в другое;
•   изоляция (isolation) — эффект от транзакции не виден другим транзакциям до тех пор, пока она не будет зафиксирована;
•   устойчивость (durability) — как только транзакция зафиксирована, она остается постоянной.



Атомарность

Рассмотрим пример:
Создадим таблицы T(вставляем сюда строки) и T2(содержит счётчик строк в таблице T), и триггер, который при вставке строки в T, увеличивает значение счётчика в Т2, при удалении - уменьшает.

12 марта 2011 г.

oracle: transaction. Транзакция. Физический уровень выполнения

Источник Транзакция. Физический уровень выполнения

Транзакция. Физический уровень выполнения

Как организован механизм транзакции на физическом уровне? Какие физические объекты ORACLE задействованы при выполнении транзакции? Что происходит при сбое системы? Насколько надежен механизм транзакции?

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


oracle: SELECT FOR UPDATE

Уровни изолированности транзакций
oracle: transaction level SERIALIZABLE

Для обеспечения повторяемости при чтении в Oracle не нужно использовать SELECT FOR UPDATE — это делается только для обеспечения последовательного доступа к данным.

Уровни изолированности транзакций