Как отметил Ларс, общее использование ресурсов не изменится эффективно
Но если у вас ограниченное время (непиковые часы) и если конфигурация системы будет соответствовать требованиям параллельного выполнения, возможно, вы можете попробовать использовать
BEGIN PARALLEL EXECUTION
<stmt>
END;
Пожалуйста, обратитесь к справочной документации
После того, как вы вычислили значение v_loop, вы знаете, сколько раз вам нужно было выполнить команду INSERT
INSERT INTO CRRENT_STOCK_TABLE
SELECT * FROM :t_rst LIMIT 2500000 OFFSET :count;
Я не уверен, как преобразовать приведенный выше код в динамический расчет для PARALLEL EXECUTION
Но вы можете предположить, скажем, 10 параллельных процессов и выполнить столько команд INSERT, изменив предложение OFFSET в соответствии с вычисленными значениями
Те, которые вы превысите, будут работать с нулевыми строками, которые не повредят всему процессу
В ответ на @LarsBr. Как он упомянул, существуют ограничения, которые будут препятствовать параллельному выполнению
Ограничения и ограничения
Применяются следующие ограничения:
Modification of tables with a foreign key or triggers are not allowed
Updating the same table in different statements is not allowed
Only concurrent reads on one table are allowed. Implicit SELECT and SELCT INTO scalar variable statements are supported.
Calling procedures containing dynamic SQL (for example, EXEC, EXECUTE IMMEDIATE) is not supported in parallel blocks
Mixing read-only procedure calls and read-write procedure calls in a parallel block is not allowed.
Эти ограничения говорят о том, что вставка в одну и ту же таблицу невозможна при разных исполнениях, и динамический SQL тоже нельзя использовать