6 миллионов строк не так уж много. Просто напишите запрос и дайте оптимизатору сделать свое дело. Если ваша статистика актуальна, что также является автоматическим, она должна работать просто отлично. Попытка настроить его, вероятно, замедлит его работу, если вы не будете лучше разбираться в оптимизации запросов, чем команда инженеров Oracle.
Можно использовать только PL / SQL, если все ваши строки достаточно малы. Пакет UTL_FILE ограничит вас 32767 символами в строке с помощью команды PUT_LINE. Есть способ обойти это, но он требует копирования данных в BLOB.
Я бы предложил установить Python и cx_Oracle или Perl и DBD :: Oracle. Они без проблем пройдут 6 миллионов рядов без проблем. Значения по умолчанию настроены на выборку строк большого размера, чтобы снизить скорость передачи по сети.
Если вы дадите мне знать, как вы хотите продолжить, я могу опубликовать пример кода, но поиск в документации по cx_Oracle или DBD :: Oracle приведёт к основам того, как получать записи.