In Oracle you might come across this situation when dealing with LOBS. Here's an example that selects an entire LOB into PHP's memory. I see this being done all the time, not that that is an excuse to code in this style. The alternative is to remove OCI_RETURN_LOBS to return a LOB locator which can be accessed chunkwise with LOB->read().
He includes an example of pulling out some large data from a table's CLOB fields showing some stats on the memory usage, both with and without an unset to handle the growing fetched data. The end result was a much lower memory usage overall (peak) and a mention of two other things that could help with the Oracle side of things - LOB->free() and the latest OCI8 extension that frees up LOB resources more efficiently.