ORA-01652: невозможно увеличить временное пространство - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть процедура, и определенный запрос в этой процедуре генерирует около 50 ГБ временного пространства, что приводит к тому, что после нескольких выполнений возникает исключение:

Состояние SQL [72000];код ошибки [1652];ORA-01652: невозможно увеличить временной сегмент на 128 в табличном пространстве TEMP

Администраторы БД указывают на приведенный ниже запрос в хранимой процедуре, которую необходимо переписать.Таблицы, используемые в приведенном ниже запросе, имеют размер менее 0,1 ГБ, но запрос генерирует 50 ГБ временного пространства!

SELECT tab1.ORDID ID1, tab2.ORDID ID2
FROM (
    SELECT 
    OT.ORDID,
    CONNECT_BY_ROOT OT.UNIQ_ORIG_KEY ORIG_UID
    FROM order_tab OT, status_tab ST
    WHERE OT.otype IN ('A','B') 
    AND OT.order_uid IS NULL 
    AND OT.BATCH_ID = ST.BATCH_ID 
    AND ST.CT_DATE = :A1 
    AND ST.BSTATUS = 1 
    CONNECT BY PRIOR OT.UNIQ_KEY = OT.UNIQ_ORIG_KEY 
      ) tab1 , order_tab tab2
WHERE tab2.ORD_VERID = 1 
AND tab1.ORIG_UID = tab2.UNIQ_KEY 
ORDER BY ID1;

Может кто-нибудь помочь эффективно переписать запрос, чтобы уменьшить использование временного пространства.База данных используется Oracle 12c.

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