DISK_ASYNCH_IO - Enable Oracle Asynchronous I/O
DISK_ASYNCH_IO
Section titled “DISK_ASYNCH_IO”Overview
Section titled “Overview”DISK_ASYNCH_IO controls whether Oracle uses asynchronous I/O for disk operations against datafiles, control files, and log files stored on file systems. When enabled (the default), Oracle submits I/O requests to the operating system and continues processing without waiting for each request to complete — the OS notifies Oracle when each I/O finishes. This allows database writer processes (DBWn) and other background processes to overlap I/O with other work, improving throughput especially on systems with high write concurrency.
When DISK_ASYNCH_IO is set to FALSE, Oracle falls back to synchronous I/O — each I/O request blocks the calling process until it completes. This can serialize I/O and significantly reduce throughput on write-intensive workloads. This parameter applies only to file system files; ASM disk group I/O uses a separate asynchronous mechanism and is not affected by this setting.
Parameter Type: Static (requires instance restart to change) Default Value: TRUE Valid Values: TRUE, FALSE Available Since: Oracle 8i Modifiable: No — SCOPE=SPFILE only; takes effect on next startup PDB Modifiable: No (CDB-level setting)
Configuration
Section titled “Configuration”Viewing Current Value
Section titled “Viewing Current Value”-- Check current DISK_ASYNCH_IO settingSELECT name, value, isdefault, ismodified, descriptionFROM v$parameterWHERE name = 'disk_asynch_io';
-- Check SPFILE value (persistent setting for next startup)SELECT name, value, isspecifiedFROM v$spparameterWHERE name = 'disk_asynch_io';
-- Check related async I/O parameters togetherSELECT name, valueFROM v$parameterWHERE name IN ( 'disk_asynch_io', 'tape_asynch_io', 'filesystemio_options', 'db_writer_processes')ORDER BY name;
-- Check whether async I/O is actually being used (OS-level view)SELECT name, valueFROM v$parameterWHERE name = 'disk_asynch_io';Setting the Parameter
Section titled “Setting the Parameter”-- Enable asynchronous I/O (default; recommended)ALTER SYSTEM SET disk_asynch_io = TRUE SCOPE=SPFILE;
-- Disable asynchronous I/O (for diagnosis or unsupported OS configurations)ALTER SYSTEM SET disk_asynch_io = FALSE SCOPE=SPFILE;
-- After changing, restart the instance to apply-- SHUTDOWN IMMEDIATE;-- STARTUP;
-- Verify the new setting after restartSELECT name, value, isdefaultFROM v$parameterWHERE name = 'disk_asynch_io';Tuning Guidance
Section titled “Tuning Guidance”Recommended Values
Section titled “Recommended Values”| Environment | Recommended Setting |
|---|---|
| Linux (ext4, XFS, NFS with async) | TRUE (default) |
| AIX with JFS2 | TRUE |
| Solaris with UFS | TRUE |
| Windows NTFS | TRUE |
| NFS without async mount option | FALSE or use FILESYSTEMIO_OPTIONS |
| Legacy OS without kernel async I/O | FALSE |
| ASM disk groups (all platforms) | Not applicable — ASM uses its own async mechanism |
In the vast majority of modern production environments, DISK_ASYNCH_IO = TRUE is correct and should not be changed. Disabling it is only appropriate when diagnosing I/O-related problems or when the OS configuration does not support kernel-level async I/O.
How to Size
Section titled “How to Size”This is a boolean parameter with no numeric tuning. The key decision is whether your OS and file system combination supports asynchronous I/O properly. Verify OS-level async I/O support before relying on this feature.
-- Monitor I/O wait events to assess async I/O effectivenessSELECT event, total_waits, time_waited, ROUND(time_waited / NULLIF(total_waits, 0), 2) AS avg_wait_msFROM v$system_eventWHERE event IN ( 'db file async I/O submit', 'db file sequential read', 'db file scattered read', 'db file parallel read', 'log file parallel write', 'log file sync')ORDER BY time_waited DESC;
-- Check DBWn efficiency (high async I/O benefit visible here)SELECT name, valueFROM v$sysstatWHERE name IN ( 'physical write total IO requests', 'physical write total bytes', 'DBWR checkpoint buffers written', 'DBWR buffers scanned')ORDER BY name;
-- Review background process wait patternsSELECT p.program, e.event, e.total_waits, e.time_waitedFROM v$process pJOIN v$session s ON p.addr = s.paddrJOIN v$session_event e ON s.sid = e.sidWHERE p.background = 1 AND e.event LIKE '%I/O%'ORDER BY e.time_waited DESC;Monitoring
Section titled “Monitoring”-- Check for I/O-related wait events that indicate async I/O issuesSELECT event, total_waits, total_timeouts, time_waited, average_waitFROM v$system_eventWHERE event LIKE '%async%' OR event LIKE '%db file%'ORDER BY time_waited DESCFETCH FIRST 10 ROWS ONLY;
-- Examine I/O throughput by fileSELECT f.name, s.phyrds, s.phywrts, s.readtim, s.writetim, ROUND(s.writetim / NULLIF(s.phywrts, 0), 2) AS avg_write_msFROM v$datafile fJOIN v$filestat s ON f.file# = s.file#WHERE s.phywrts > 0ORDER BY s.writetim DESC;Common Issues
Section titled “Common Issues”Issue 1: Async I/O Enabled but OS Does Not Support It
Section titled “Issue 1: Async I/O Enabled but OS Does Not Support It”On some NFS mounts or legacy file systems, DISK_ASYNCH_IO = TRUE may be set but the OS silently falls back to synchronous I/O. Oracle will not report an error, but I/O performance will be degraded.
Resolution: Verify OS async I/O is enabled and working. On Linux, check that libaio is installed and that the mount options for NFS volumes include async or that FILESYSTEMIO_OPTIONS=ASYNCH is configured where appropriate.
-- After a suspected fallback, compare wait events before and after-- disabling DISK_ASYNCH_IO to see if behavior changesSELECT event, time_waitedFROM v$system_eventWHERE event IN ('db file async I/O submit', 'db file sequential read')ORDER BY event;Issue 2: I/O Errors After Disabling Async I/O
Section titled “Issue 2: I/O Errors After Disabling Async I/O”Setting DISK_ASYNCH_IO = FALSE for diagnosis and then forgetting to re-enable it leaves the database running in synchronous I/O mode permanently. This commonly surfaces as elevated db file sequential read or log file sync wait times.
Resolution: Re-enable the parameter and restart the instance. Monitor wait events after the restart to confirm improvement.
-- Confirm async I/O is re-enabled after restartSELECT name, valueFROM v$parameterWHERE name = 'disk_asynch_io';
-- Confirm I/O wait events return to baselineSELECT event, total_waits, time_waitedFROM v$system_eventWHERE event IN ('db file sequential read', 'log file sync')ORDER BY time_waited DESC;Issue 3: Confusion with FILESYSTEMIO_OPTIONS
Section titled “Issue 3: Confusion with FILESYSTEMIO_OPTIONS”DISK_ASYNCH_IO is sometimes confused with FILESYSTEMIO_OPTIONS. The former is a boolean that enables or disables Oracle’s use of OS async I/O at a high level. The latter controls more granular options including direct I/O and is platform-specific. Both may need to be configured together for optimal performance.
Resolution: Review both parameters together and consult platform-specific Oracle documentation.
-- Review all I/O-related parameters at onceSELECT name, value, isdefaultFROM v$parameterWHERE name IN ('disk_asynch_io', 'filesystemio_options', 'tape_asynch_io')ORDER BY name;Related Parameters
Section titled “Related Parameters”- FILESYSTEMIO_OPTIONS — Controls direct I/O and async I/O at the file system level; used alongside this parameter
- DB_WRITER_PROCESSES — Controls the number of database writer processes; async I/O amplifies DBWn throughput
- DB_FILE_MULTIBLOCK_READ_COUNT — Controls read I/O size for full scans; pairs with async I/O for sequential read throughput
- LOG_BUFFER — Redo log buffer size; log writer also benefits from async I/O when enabled
Related Errors
Section titled “Related Errors”- ORA-27125: Unable to Create Shared Memory Segment — Can surface in conjunction with I/O misconfiguration on some platforms
- ORA-01578: ORACLE Data Block Corrupted — In rare cases, improper async I/O on unsupported NFS configurations has been linked to block corruption; always verify OS-level async I/O support
Version Notes
Section titled “Version Notes”| Version | Notes |
|---|---|
| Oracle 8i | Parameter introduced |
| Oracle 10g | Default TRUE; async I/O used by DBWn, LGWR, and CKPT |
| Oracle 11g | No functional changes; behavior consistent across supported platforms |
| Oracle 12c+ | Fully supported; ASM continues to use its own separate async I/O path |
| Oracle 19c+ | No changes; TRUE remains the correct default for all modern OS configurations |
| Oracle 21c / 23ai | Behavior unchanged; verify NFS mount options when using dNFS (Direct NFS) alongside this parameter |