У меня есть код в моей процедуре pl/sql, который пытается собрать 17 миллионов строк, и с ошибкой ORA-04030: из памяти процесса при попытке выделить 16328 байт (KOH-kghu вызовов, pmuccst: ADT/запись)Проблема с BULK COLLECT из миллиона строк - из памяти процесса
TYPE rc_test IS RECORD(
ROWID VARCHAR2(200),
contact_id VARCHAR2(200),
last_name VARCHAR2(200),
first_name VARCHAR2(200),
phone VARCHAR2(200),
email VARCHAR2(200),
birth_day date,
address_id VARCHAR2(200),
seq NUMBER,
NEWID NUMBER);
TYPE rctype
IS TABLE OF RC_TEST;
rcrecords RCTYPE;
BEGIN
SELECT ROWID,
contact_id,
last_name,
first_name,
phone,
email,
birth_day,
address_id,
seq,
NEWID
bulk collect INTO rcrecords
FROM HR.TMP_TBL_SEQ a
order by last_name, first_name, seq;
FOR i IN 1..rcrecords.count LOOP
- < < >> END LOOP;
Он отлично работает с образцами данных сотен или тысяч строк, но не работает с миллионами строк.
Я прочитал об устранении этой ошибки, но большинство из них вращается вокруг того, чтобы сделать это через DBA, который будет выполнять некоторые настройки или посоветует нам увеличить объем оперативной памяти, который может решить проблему, но из-за определенных ограничений на первом месте, я действительно хочу для изменения логики самого кода.
Есть ли лучший способ улучшить логику вышеуказанного типа кода, чтобы избавиться от ошибки из памяти?
Вместо записи таблицы, используемой в моем коде, кто-нибудь может предоставить мне альтернативный код?
Большое спасибо.