Direct path reads occur when a session reads buffers from disk directly into the PGA (as opposed to the buffer cache in SGA). If the I/O subsystem does not support asynchronous I/Os, then each wait corresponds to a physical read request.
If the I/O subsystem supports asynchronous I/O, then the process is able to overlap issuing read requests with processing the blocks already existing in the PGA. When the process attempts to access a block in the PGA that has not yet been read from disk, it then issues a wait call and updates the statistics for this event. Hence, the number of waits is not necessarily the same as the number of read requests (unlike db file scattered read and db file sequential read).
Below is a screenshot of a system with a large amount of direct path read waits:
Direct path reads can happen in the following situations:
- Parallel slaves are used for scanning data.
- Sorts are too large to fit in memory and therefore data is sorted on disk. This data is later read back using direct reads.
- The server process is processing buffers faster than the I/O system can return the buffers. This can indicate an overloaded I/O system.