Does any one know or is there any way to find out if my database is using direct I/O on Veritas File system from oracle database. File system is already mounted with direct IO option and filesystemio_options is set to setall.
I followed this metalink document : 555607.1, i got the truss output which has no meaning to it( even as per oracle support could not help on it)
here is the ouput i got.
21919/1: ioctl(326, 0x0403, 0xFFFFFFFF7FFFD04C) Err#25 ENOTTY
The last column supposed to be either 0 or 1 , but i got different results. so that document i followed seems to not useful.
But unfortunatly we don't have quick IO licence on this server and its not enable. but we mounted this file system with convosync=direct option. and to our surprise all our dbs are much faster now. but we still don't know if dbs are using direct IO or not and if this is the reason why its faster now.
Well, what options you used foir truss...? I used,
$ truss -aefp ==> try various PIDs - DBWR, LWR and a server process.
There is one parameter "_DB_FILE_DIRECT_IO_COUNT" (8 and above. in Oracle7, it was _DIRECT_IO=TRUE)and according to oracle (documented 8 when it was not hidden), it uses only for certain operations like backups, restore, parallel query execution and large sort or joins. In that case you need to trace a server process created by RMAN for backup or restore. How ever, Direct I/O on file systems is "Synchornus". Anyway, I am yet to do more research on this.
Note 1: If possible, please paste some of the truss output containing READ()/WRITE()/DIRECTIO() calls. Many Thanks.
Note 2: VxFS Quick I/O is based KAIO ( Kernalised Asychonous I/O), KAIO eliminates the AIO API calls, and incorporating the I/O services to the kernal itself - I think that is different story? Again kaio() and aioread() are the respective system calls for KAIO and AIO, different from directio().
Technical Lead (Databases)
Thomson Reuters (Markets)