O OracleDataReader não colocará todos os registros na memória. Observe a propriedade Fetchsize que controla a quantidade de registros realmente armazenados em cache até precisarmos de uma segunda viagem de ida e volta ao banco de dados.
Se você quiser que o Oracle retorne linhas mais rapidamente, por exemplo, você pode tentar o
/*+ FIRST_ROWS(n) */
dica em sua consulta vs o
/*+ ALL_ROWS */
dica se você pode esperar por todos os dados.