Transformando Resultset em posicional

Ola a todos!

Gostaria de saber se alguem tem alguma sugestao para melhora de performance para a situação abaixo:

Executo uma procedure oracle e ela me retorna um resultset com tamanho de 5gb, 3 milhoes de registros, estou convertendo este resultset em um arquivo posicional, mas esta muito demorado, vou lendo o resultset e escrevendo os registros no arquivo, ja formatado os campos com zeros ou espaco a esquerda ou direita, o arquivo final ficara com 3gb aproximadamente, levou 9 horas so para chegar ao 1gb, acredito que terei que dividir o resulset e processar as partes e ao final dar append, alguem teria alguma outra sugestão?

Saudações,
Douglas Rezende