2012-03-06 3 views
4

Если я подключиться к базе данных оракула в качестве пользователя кузнеца, и выполните следующие 3 команды:oracle - зафиксировать над dblink?

update smith.tablea 
set col_name = 'florence' where col_id = 8; 

insert into [email protected] 
values ('blah',2,'uncle','new'); 

commit; 

Означает ли это, что обновление для локальной таблицы (smith.tablea) и вставки в таблицу удаленной БД (bob.other_table) были зафиксированы или что только обновление для локальной таблицы было выполнено?

Примечание: «mylink» представляет dblink для удаленной базы данных.

+0

Вы проверили 'bob.other_table @ mylink' в другом сеансе, чтобы проверить, имеются ли данные или не работает ли он? – Ben

ответ

4

В этом случае транзакция должна работать только в том случае, если удаленная транзакция и локальная транзакция успешны.

Более подробную информацию о распределенных транзакциях:

http://docs.oracle.com/cd/B19306_01/server.102/b14231/ds_txnman.htm

5

От documentation

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

так что - да, если все идет хорошо, обе операции совершаются.

Смежные вопросы