oracle - совершать через dblink? - PullRequest
5 голосов
/ 06 марта 2012

Если я подключаюсь к базе данных oracle как пользователь smith и выполняю следующие 3 команды:

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

insert into bob.other_table@mylink
values ('blah',2,'uncle','new');

commit;

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

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

Ответы [ 2 ]

6 голосов
/ 06 марта 2012

Из документации

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

так что - да, если все пойдет хорошо, обе операции будут зафиксированы.

5 голосов
/ 06 марта 2012

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

Подробнее о распределенных транзакциях:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...