Я использую Oracle и Teradata обе базы данных в моем проекте на основе Java. Я хочу настроить глобальную транзакцию, чтобы я мог выполнять операции с обеих БД в рамках одной транзакции.
Для глобальных транзакций, таких как JTA или база данных atomikos, должна быть поддержка драйверов XA. Но, как мои выводы, у Teradata нет драйвера XA.
Итак, теперь, как мне настроить глобальные транзакции и операции производительности в обеих транзакциях по транзакции 1?
Если вы используете оракул и базу данных Teradata, вам необходимо настроить шлюз базы данных oracle для поддержки распределенных транзакций. В этом случае вы не будете использовать XA, но будете использовать распределенные транзакции с двухфазным фиксацией.
Почему вы хотите это сделать?
Если вы используете terradata в качестве хранилища данных, вы можете подать его в отдельный асинхронный процесс.
При этом вам не нужен драйвер XA для выполнения как часть транзакции JTA. Конечно, не делать этого приводит к некоторому компромиссу, особенно в случае выздоровления.
Все управляющие транзакциями JTA, о которых я знаю, имеют понятие Last Resource Commit (или LRC, проверьте эту страницу для получения более подробной информации). Вы можете настроить свой источник данных Teradata как LRC.