OracleDataReader no colocará todos los registros en la memoria. Observe la propiedad Fetchsize, que controla la cantidad de registros realmente almacenados en caché hasta que necesitemos un segundo viaje de ida y vuelta a la base de datos.
Si desea que Oracle devuelva filas más rápido, por ejemplo, puede probar el
/*+ FIRST_ROWS(n) */
pista en su consulta frente a la
/*+ ALL_ROWS */
indique si puede esperar todos los datos.