Oracle Internals Notes

Direct I/O

Direct I/O is I/O to file system based files which bypasses the operating system's file system buffer cache. Direct I/O saves memory and boosts the performance of database applications like Oracle that cache their own data independently (more). It also avoids performance problems associated with using database block sizes that do not match the file system buffer size exactly. (more). Whether direct I/O is available, and the way in which it can be enabled, are dependent on the operating system and file system type in use. Direct I/O can sometimes be enabled for an entire file system, using a file system mount option. Application programs may also be able to request direct I/O for a particular file by setting a flag when opening the file.

Most operating systems support numerous types of file systems. Some aspects of file system operation are independent of file system type and are implemented in a common part of the operating system kernel. However, many other aspects of file system operation, including direct I/O availability, are dependent on the type of file system in use. For example, some file systems cannot support direct I/O because their file system structure is such that file system blocks do not align with device block boundaries and so I/O requests cannot be mapped directly from file system blocks to device blocks. File systems that can support direct I/O may only be able to do so via a mount option if the file system independent layer of the operating system does not support a direct I/O flag in its open() system call.

The following table details the availability of program selectable direct I/O for some important operating systems. Oracle may use this operating system feature automatically when opening database files, or it may be used based on the setting of the filesystemio_options parameter. Of course, the file system must support direct I/O for that setting to be effective. See the second table below for details about which file systems support program selectable direct I/O.

Operating systemProgram selectable direct I/O
Solarisavailable, used based on filesystemio_options
Windows NT/2000available, used automatically
Tru64 Unixavailable, used automatically from (and in on 5.1 with PK4
or 5.1A with PK1 or later; can be disabled with _tru64_directio_disabled or filesystemio_options from 9.2
AIXavailable, usage unknown
Irixavailable, usage unknown
Linuxavailable (2.4 kernels), not yet used by Oracle
HP-UXnot available
Reliant Unixnot available

The following table details direct I/O availability for some important file systems.

File systemMount optionProgram selectable
Solaris UFSforcedirectioyes
Solaris VxFSconvosync=directyes
HP-UX HFSnoneno
HP-UX BaseJFSnoneno
HP-UX OnlineJFSconvosync=directno
AIX JFSnoneyes
AIX VxFSconvosync=directyes
Irix EFSnoneyes
Irix XFSnoneyes
Reliant Unix VxFSconvosync=directno
Reliant Unix UFSnoneno
Tru64 Unix AdvFSnoneyes
Tru64 Unix UFSnoneno

If your operating system or file system is not listed in the tables above, and if you are aware of the details, please click on the feedback icon below and send us an email so that we can add it to the list.

Ixora Pty Ltd.   All rights reserved.
12-Oct-2007 22:22
Search   Questions   Feedback   Up   Home