Можно ли выполнять параллельные вложенные транзакции? - PullRequest
2 голосов
/ 02 декабря 2011

У меня есть сценарий, в котором мне нужно параллельно вызывать набор различных процедур оракула. Эти процедуры должны использовать один и тот же начальный контекст, в котором есть незафиксированные транзакции. Я не могу зафиксировать родительскую транзакцию под угрозой несоответствия между этими параллельными процессами. Возможно ли это в PL / SQL?

Ответы [ 3 ]

1 голос
/ 04 декабря 2011

Мне приходит в голову одно: mapreduce с табличными функциями http://blogs.oracle.com/datawarehousing/entry/mapreduce_oracle_tablefunction

Я использовал это в нескольких сценариях для одновременного запуска, хотя я не уверен, что это применимо к вашей проблеме.

0 голосов
/ 04 декабря 2011

Этого можно достичь, используя пакет DBMS_XA , который позволяет вам «переключать или совместно использовать транзакции между сеансами или процессами SQL * Plus с использованием PL / SQL».

Oracle-Base содержит хороший пример использования пакета.

(Но если ваша цель - использовать параллелизм для повышения производительности, вы должны вместо этого использовать обычное параллельное выполнение на уровне операторов.)

0 голосов
/ 02 декабря 2011

Насколько я знаю: нет.

DBMS_JOB и DBMS_SCHEDULER могут использоваться для параллельного запуска процедур Oracle, но они запускают их в своих собственных сеансах.

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