Создание точки подтверждения. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание точки подтверждения.



Сила точки подтверждения – это некоторое число, которое назначается при запуске экземпляра Oracle. Администратор сети в праве ее назначить сам. Чем больше значение ее, тем больше возможность, что этот узел будет точкой подтверждения.

При определении стороны точки подтверждения применяются следующие правила:

· только читаемый узел (к которому были направлены предложения SELECT) не может быть назначен как сторона точки подтверждения, какой бы силой он не обладал

· если все узлы, к которым непосредственно обращается глобальный координатор, имеют одинаковую силу, то Oracle назначает один из узлов стороной точки подтверждения

· если распределенная транзакция заканчивается откатом, то точка подтверждения вообще не назначается; вместо этого глобальный координатор отсылает всем команду откатить транзакцию

 

Пример транзакции на двух узлах:

INSERT INTO orders...

UPDATE investory@warehouse...

 

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

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

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

Виды сбоев, возникающие при завершении транзакции:

· сбой машины

· сбой сети

· сбой программного обеспечения

· сбой локальной инстанции

 

Для разрешения проблем со сбоями используется фоновый процесс RECO. Данный процесс автоматически разрешает сбой распределенной транзакции. Через экспоненциально увеличивающиеся интервалы времени этот процесс на узле пытается восстановить локальную порцию сомнительной распределенной транзакции. При этом автоматически удаляются записи из таблицы «висящих» транзакций.

Таблица висящих транзакций. Она есть в каждой БД Oracle. Это специальная таблица, хранящая информацию о распределенных транзакциях при прохождении ими двухфазного COMMIT. Эта таблица опрашивается через словарный обзор DBA_2PC_PENDING (к нему можно применить SELECT). Этот обзор может быть находиться в следующих состояниях (смотри поле этого обзора STATE):

· collecting – применяется только к глобальным и локальным координаторам; означает, что в данный момент узел находится в процессе сбора информации от других серверов БД;

· prepared – узел подготовился и возможно уже сообщил это своему локальному координатору, но еще не получил приказ подтвердить транзакцию; узел удерживает все локальные блокировки данных, необходимые для подтверждения данных;

· committed – узел любого типа подтвердил транзакцию, но другие узлы возможно еще не сделали этого, т.е. транзакция висит на других узлах;

· forced commit – висящая транзакция может быть подвергнута принудительному подтверждению по усмотрению администратора БД; это означает, что транзакция подтверждена вручную на локальном узле администратора БД;

· forced abort – висящая транзакция может быть подвергнута принудительному откату по усмотрению администратора БД, т.е. эта транзакция отменена на локальном узле администратора БД.

Поле DBA_2PC_PENDING.MIXED, называемое флагом смешанного исхода, используется в следующих случаях:

1) если администратор отменил транзакцию, хотя она была подтверждена, то флаг примет значение true и транзакция будет повреждена;

2) …..

 

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

Завершенная транзакция означает автоматическое удаление записи о ней процессом RECO, а если поле MIXED будет равно true, то запись остается до момента удаления ее самим администратором.

 



Поделиться:


Последнее изменение этой страницы: 2017-01-26; просмотров: 103; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.21.231.245 (0.005 с.)