set serveroutput on size unlimited
set time on timing on echo on

max_iops integer;
max_mbps integer;
actual_latency integer;
dbms_resource_manager.calibrate_io (
num_physical_disks => 48,
max_latency => 10,
max_iops => max_iops,
max_mbps => max_mbps,
actual_latency => actual_latency);
dbms_output.put_line (‘IOPS = ‘|| max_iops);
dbms_output.put_line (‘MBPS = ‘|| max_mbps);
dbms_output.put_line (‘Latency = ‘|| actual_latency);

Here’s some notes for you to think about:

1. num_physical_disks is not the number of LUNs. It is the number of disks the LUNs are comprised of.
2. The default max_latency is set to 20 milliseconds if you do not provide a value for this parameter. This parameter defines the maximum tolerable latency for database I/O requests. We should set this to a value of 10

The output for this stored procedure will be max IOPs (maximum number of randomly distributed I/O requests per second that can be sustained) and MBPS (maximum throughput for I/O that can be sustained)

The calibration result is available from the V$IO_CALIBRATION_STATUS view. Successful calibration results are located in DBA_RSRC_IO_CALIBRATE table.

Only one calibration can be executed at the same time, and you need SYSDBA privileges to execute this stored procedure.

You can leverage the print_table from TomKyte’s website:

SQL> exec print_table(‘ select inst_id, status, calibration_time from gv$io_calibration_status’);

Eventually, the status from change to a READY state. Now, you can query the DBA_RSRC_IO_CALIBRATE view:

exec print_table(‘select * from dba_rsrc_io_calibrate’);
Posted in ASM
Share this post, let the world know

Comments are closed