Grandes problemas de desempenho com o Oracle DataReader em .Net

Eu tenho alguns procedimentos Oracle que geram / retornam uma grande quantidade de dados que eu preciso gravar em um arquivo. Atualmente, estou tentando realizar com um leitor de dados. Parece estar funcionando, eu gerei com sucesso um arquivo 479mb sem nenhum problema. Demorou menos de 4 minutos a partir do momento em que recuperei o dataReader para concluir o arquivo.

Mas o dataReader que recebo para um procedimento específico érastejando. É incrivelmente lento. Modifiquei meu código para tentar ter uma idéia melhor do que está acontecendo ....

System.Diagnostics.Debug.Write("Performing .Read() on DataReader: ")
Dim d1 As DateTime = DateTime.Now
Dim result As Boolean = myDataReader.Read()
Dim ts As TimeSpan = DateTime.Now.Subtract(d1)
System.Diagnostics.Debug.WriteLine(ts.ToString)

O interessante é que minha saída acaba assim:

Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:07:33.5037500

Estou realmente sem saber o que fazer a seguir. Não vejo nada de único ou diferente na linha que leva 07: 33.5037500. Alguma sugestão?

EDITAR:

Obrigado pelas respostas a todos. Primeiro, pelo melhor que posso dizer, nenhuma exceção está sendo lançada. Como sugerido, dei uma olhada neste procedimento específico que está exibindo o comportamento acima e enquanto o procedimento é ridiculamente maciço; mas parece que ele usa muitos cursores para preencher uma tabela temporária do oracle. O cursor de referência retornado é um SELECT * FROM dessa tabela temporária.

Estou escrevendo um bloco PL / SQL que abrirá o cursor para ver se existe um problema de desempenho ao remover o código .Net .... espero que ajude; mas se você tiver outras ideias, será muito apreciado.

Obrigado mais uma vez. Este parece ser um problema de PL / SQL e não um problema do .NET.

questionAnswers(3)

yourAnswerToTheQuestion