У меня есть хранимая процедура, в которой я использую курсор для циклического перемещения по элементам во временной таблице:
OPEN CURSOR_SCORE_ITEMS FOR SELECT
ID_X, ID_Y
FROM
SCORE_ITEMS
GROUP BY
ID_X, ID_Y
HAVING
SUM(SCORE) > 10;
LOOP
FETCH CURSOR_SCORE_ITEMS BULK COLLECT INTO COMPARE_ITEMS LIMIT 100;
---loop over items and do stuff---
END LOOP;
CLOSE CURSOR_SCORE_ITEMS;
Процедура работает нормально для случаев, когда таблица 'SCORE_ITEMS' мала, но для большихтаблицы (несколько миллионов строк) Я получаю сообщение об ошибке
"ORA-01652: Temp-Segment kann nicht um 12800 в табличном пространстве TEMP_ALL erweitert werden"
(извините,на немецком языке).
Обратите внимание, что SCORE_ITEMS - это временная таблица, созданная ранее в процедуре.Похоже, что запрос курсора превышает размер временного табличного пространства.
Я уже читал некоторые решения, которые включают увеличение размера табличного пространства, но у меня нет никаких привилегий для этой базы данных, поэтому я не думаю, чтовозможно.Есть ли альтернативный способ или какая-то предварительная обработка, которую я мог бы рассмотреть, чтобы уменьшить накладные расходы во временном табличном пространстве?