The session is waiting for a direct read to complete. A direct read is a physical I/O from a data file that bypasses the buffer cache and reads the data block directly into process-private memory.
If asynchronous I/O is supported (and in use), then Oracle can submit I/O requests and continue processing. Oracle can then pick up the results of the I/O request later and wait on "direct path read" until the required I/O completes.
If asynchronous I/O is not being used, then the I/O requests block until completed but these do not show as waits at the time the I/O is issued. The session returns later to pick up the completed I/O data but can then show a wait on "direct path read" even though this wait will return immediately.
Hence this wait event is very misleading because:
The total number of waits does not reflect the number of I/O requests
The total time spent in "direct path read" does not always reflect the true wait time.
Sort I/O (when a sort does not fit in memory)
Parallel Query slaves
Read ahead (where a process may issue an I/O request for a block it expects to need in the near future)
The rest of the information in this section is only valid for this metric when it appears in either the Enterprise Manager Grid Control or the Enterprise Manager Database Control (if applicable).
The following table shows how often the metric's value is collected and compared against the default thresholds. The 'Consecutive Number of Occurrences Preceding Notification' column indicates the consecutive number of times the comparison against thresholds should hold TRUE before an alert is generated.
Target Version |
Evaluation and Collection Frequency |
Upload Frequency |
Operator |
Default Warning Threshold |
Default Critical Threshold |
Consecutive Number of Occurrences Preceding Notification |
Alert Text |
pre-10g |
Every Minute |
After Every Sample |
> |
50 |
Not Defined |
3 |
%value%%% of service time is spent waiting on the 'direct path read' event. |
(DeltaDirectPathReadTime/DeltaServiceTime)*100 where:
DeltaDirectPathReadTime: difference of 'sum of time waited for sessions of foreground processes on the 'direct path read' event' between sample end and start
DeltaServiceTime: difference of 'sum of time waited for sessions of foreground processes on events not in IdleEvents + sum of 'CPU used when call started' for sessions of foreground processes' between sample end and start
See Idle Events
In DSS type systems, or during heavy batch periods, waits on "direct path read" are normal. However, if the waits are significant on an OLTP style system, there may be a problem.
You can:
Examine the V$SESSION_EVENT view to identify sessions with high numbers of waits
Examine the V$SESSTAT view to identify sessions with high "physical reads direct" (statistic only present in newer Oracle releases)
Examine the V$FILESTAT view to see where the I/O is occurring
Examine the V$SQLAREA view for statements with SORTS and high DISK_READS (which may or may not be due to direct reads)
Determine whether the file indicates a temporary tablespace check for unexpected disk sort operations.
Ensure that the DISK_ASYNCH_IO parameter is set to TRUE. This is unlikely to reduce wait times from the wait event timings but may reduce sessions elapsed times (as synchronous direct I/O is not accounted for in wait event timings).
Ensure the OS asynchronous I/O is configured correctly.
Check for I/O heavy sessions and SQL and see if the amount of I/O can be reduced.
Ensure no disks are I/O bound.
Related Topics
About Alerts
About the Metric Detail Page
Editing Thresholds
Understanding Line Charts
Copyright © 1996, 2009, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.