Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Mailing Lists -> Oracle-L -> RE: comments on forcedirectio

RE: comments on forcedirectio

From: Steve Rospo <>
Date: Fri, 29 Apr 2005 16:44:44 -0700 (PDT)
Message-ID: <Pine.GSO.4.44.0504291623371.13770-100000@gonzo>

I can't comment on forcedirectio sideeffects on NetApp but I don't think I've ever seen any recommendation to avoid fdio on datafiles. While looking for this paper ( which I'm sure commented on forcedirectio I found this one, "Understanding the Benefits of Implementing Oracle RAC on Sun" ( Don't let the RAC label scare you off, there's a couple of interesting tidbits I didn't know.

"By default, Solaris file systems break synchronous writes into 8-kilobyte units, so a single 64-kilobyte write will be performed as eight 8-kilobyte synchronous writes. Therefore, regardless of the size of the Oracle I/O, logs are written to as individual 8-kilobyte transactions, indirectly limiting the log throughput to the number of synchronous I/Os the underlying device can perform.

The direct I/O feature eliminates this
behavior, allowing large writes to complete as a single I/O. Enabling direct I/O for the transaction log allows the Oracle log writer to efficiently batch log file writes, eliminating the log file as a bottleneck and allowing scalable throughput. As of the release of the Solaris 8 1/01 OS, direct I/O eliminates single writer locks on entire files, referred to as concurrent direct I/O."

Beyond the redo log, it looks like this has benefits for the db writer if you're using > 8k block sizes.

Later the same paper addresses single writer locks on "cooked" file systems:

"Direct I/O that eliminates the single writer lock (known as concurrent direct I/O) was available in the Solaris 8 1/01 OS. This allows the UFS to perform nearly as well as raw disks when used with the Oracle database."

It looks to me like by not using forcedirectio on datafiles and redo, you're missing out on a lot. Maybe the author of the article didn't have a big enough buffer cache and saw a big performance hit when the double buffering was removed?


On Fri, 29 Apr 2005, Reidy, Ron wrote:

> Not sure on this one, but I think using this on NetApp will corrupt your =
> datafiles (worst case) or just cause your instance to crash at random =
> times (best case).
> -----Original Message-----
> From:
> []On Behalf Of
> Sent: Friday, April 29, 2005 4:48 PM
> I've read articles that encourages the use of forcedirectio on redo logs =
> but discourages on oracle datafiles. With my limited understanding on =
> the forcedirectio option, I believe it should be used on Oracle =
> datafiles to eliminate double buffering. The use of forcedirectio should =
> improve database performance.=20
> Are there any reasons why the option should not be used on Oracle =
> datafiles? Does the use of the option depends on the type of storage =
> array? We have databases on SUN StorEdge T4 and NetApp.

Stephen Rospo        Principal Software Architect
Vallent Corporation (formerly Watchmark-Comnitel)           (425)564-8145

This email may contain confidential information. If you received this in
error, please notify the sender immediately by return email and delete this
message and any attachments. Thank you.

Received on Fri Apr 29 2005 - 19:51:26 CDT

Original text of this message