DBMS_Resource_Manager.Calibrate_IO Usage DBMS_Resource_Manager has a procedure called Calibrate_IO with a Physical Disks input parameter.  The documentation says this value should be set to the...


  Approximate number of physical disks in the database storage


With a logical drive striped across an unknown number of disks in a SAN disk group containing 30 drives, I'm not sure what this means.  I ran the procedure for values of 1 and 30, yet the IOPS, MBPS and latency were nearly identical.  

Is this number just for informational purposes or is it actually used?  If the the later, then what should it be set to when there is not a one to one relationship between logical disks and physical disks?

Block to run procedure:

set serveroutput on;

DECLARE
   vDisks         Binary_Integer := 30;
   vMaxLatency    Binary_Integer := null;
   vMaxIOPS       Binary_Integer;
   vMaxMBPS       Binary_Integer;
   vActualLatency Binary_Integer;
BEGIN   
   DBMS_RESOURCE_MANAGER.Calibrate_IO(Num_Physical_Disks =&gt; vDisks
      , Max_IOPS =&gt; vMaxIOPs, Max_MBPS =&gt; vMaxMBPS
      , Actual_Latency =&gt; vActualLatency);
   DBMS_OUTPUT.PUT_LINE('      Max IOPS:' || vMaxIOPS);
   DBMS_OUTPUT.PUT_LINE('      Max MBPS:' || vMaxMBPS);
   DBMS_OUTPUT.PUT_LINE('Actual Latency:' || vActualLatency);   
END;
/

select * from dba_rsrc_io_calibrate;
It really is to be the number of physical disks, in the old fashioned style, not using a SAN. The best article about this I found here http://blog.bensmann.com/testing-oracle-io. Most others blogs/docs I found were more like copies from manuals than original contents that explains something new. When using this on a SAN, the cache is going to play a big role, as is the inner working of those beasts. For example, they write in a buffer and give an acknowledgement to the rdbms that the write is complete, even when the data did not even come close to the intended disk. When continuously other blocks are written, that cache could be choked and then we get a better view of the real io performance. Reading and updating blocks from a regular sized datafile won't be sufficient to reach that.