OracleDataReader non inserirà tutti i record in memoria. Guarda la proprietà Fetchsize che controlla la quantità di record effettivamente memorizzati nella cache fino a quando non avremo bisogno di un secondo roundtrip al database.
Se vuoi che Oracle restituisca le righe più velocemente, ad esempio, puoi provare
/*+ FIRST_ROWS(n) */
suggerimento nella tua query rispetto a
/*+ ALL_ROWS */
suggerisci se puoi aspettare tutti i dati.