cancel
Showing results for 
Search instead for 
Did you mean: 

Watching Oracle Disk Manager work with Solaris dtrace

Hi,

I had to get ODM to work in a Solaris 10 container (aka zone) and wanted to make sure that Oracle did indeed use ODM and direct I/O to the Oracle files. I could not find documentation for the Veritas dtrace probes but after some trying and guessing the following dtrace script turned out to be helpful.

 

#!/usr/sbin/dtrace -s
#pragma D option quiet

fbt:odm:odm_vx_*io:entry
/!self->trace/
{
        self->trace = 1;
}

fbt:vxfs:vx_dio_rdwri:entry,
fbt:vxfs:vx_dio_check:entry
/self->trace/
{
        printf("%s %s\n", probefunc,
          stringof(((struct vnode *)
                    ((struct vx_inode*) arg0)->i_vnode)->v_path));
}

fbt:odm:odm_vx_*io:return
/self->trace/
{
        self->trace = 0;
}
The vx_dio_check probe seems to trigger whenever IO takes places via ODM. When the IO is not cached, i.e. via Cached Oracle Disk Manager, the vx_dio_rdwri probe also triggers.
 
Example:
 
vx_dio_check /zones/ora/root/orcldata/bodm1/control02.ctl
vx_dio_rdwri /zones/ora/root/orcldata/bodm1/control02.ctl
vx_dio_check /zones/ora/root/orcldata/bodm1/control01.ctl
vx_dio_rdwri /zones/ora/root/orcldata/bodm1/control01.ctl
vx_dio_check /zones/ora/root/orcldata/bodm1/system01.dbf
vx_dio_rdwri /zones/ora/root/orcldata/bodm1/system01.dbf
vx_dio_check /zones/ora/root/orcldata/bodm1/example01.dbf
vx_dio_check /zones/ora/root/orcldata/bodm1/example01.dbf
vx_dio_check /zones/ora/root/orcldata/bodm1/control01.ctl
vx_dio_rdwri /zones/ora/root/orcldata/bodm1/control01.ctl
 
I had caching enabled for example01.dbf via CODM so we don't see the vx_dio_rdwri probe for the exampl01.dbf, only the vx_dio_check probe.
 
This is for Storage Foundation 5.1SP1 Solaris x64. 
 
Perhaps someone finds this useful. Generally my impression is that ODM is a very useful performance feature that most people have licensed but which nevertheless is seldom used.