For batch processing of large numbers of records, we always advice to use the TOracleQuery. It doesn't buffer records in memory, and doesn't have any TDataSet overhead. The TOracleDataSet is primarily designed for use with data-aware controls.
However, there are circumstances where people need or want to use a dataset to process hundreds of thousands of records. Therefore we are considering a TOracleDataSet.UniDirectional property. When True, the TOracleDataSet will not buffer any records. Furthermore we are considering a TOracleDataSet.RecordBufferSize property, which determines how many records can be held in memory before flushing the eldest records to disk.
Andrey, thanks for the offer to send us your buffered cache stream class. Just e-mail the source to me and I'll see if it (or some of it) is suitable for our requirements.
------------------
Marco Kalter
Allround Automations