Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: sun solaris and direct io
I am not an expert on IO calls, but I think all open( ) uses O_DSYNC( )
flag.
It is the subsequent calls that may vary depending if you use file
system
or not.
But maybe I can answer your 2nd question. One quick way to test is
start a full table scan session and query p3 value of that session
with v$session_wait when it is under the event 'db file scattered
read'
and see if most of your p3 value matches your
db_file_multiblock_read_count - assuming if you have increased the
value to take the advantage of DIO.
On most systems, you should be able to get 128 for 8K blocks - that usually is the max IO size you can possibly get. Otherwise, you can only get as many blocks as your file system buffer allows which varies from 8K to 256K ( or 1 to 32 for p3 value ) depending on OS and file system type. I did this for my database and am able to get 128 on my P3 value. With that I am sure it is doing DIO. Without it, with Dicovered DIO (default) with my Varitus FS, I can only get 32. If I use Sun straight UFS (2.8) without DIO, I can only get 1.
You won't be able to tell the difference with index scans as they are always 1 single block.
Note that you do need to run this many times to get a reliable value as db_file_multiblock_read_count can not span across extents.
You can also trace the FTS session with 10046 event, level 12 to get complete P3 value across the entire session.
Also you will need to change maxphys in your /etc/system to 1 MB. I think the default is 128K, if not set.
I may be wrong on some of the above numbers which other experts are welcome to correct me. Received on Fri Jun 03 2005 - 16:53:44 CDT
![]() |
![]() |