Небольшой и опасный workaround для работы с gtt в pipelined функции с parallel_enable



Очередная задачка показалась мне интересной: Oracle очень плохо работает с временными таблицами(gtt - global temporary tables) в параллели.

Вообще у gtt в параллели в 11g куча ограничений, а до этого вообще запрещены:
10.2: Restrictions on Temporary Tables:

Parallel DML and parallel queries are not supported for temporary tables. Parallel hints are ignored. Specification of the parallel_clause returns an error.
11.1: Restrictions on Parallel DML
11.2: Restrictions on Parallel DML:
Parallel UPDATE, DELETE and MERGE are not supported for temporary tables.

Обновление:
Я был категорически не прав: в примере, который я привел ранее, данные gtt доступны только в одном слейве. Вообще доступность этих данных организуется каким-то хитрым способом, например, поглядите на данный пример:
«Показать код...»
«Ошибочный пример с видимостью только в одном слейве:»

Comments

Отправить комментарий