DBMS_RESOURCE_MANAGER
.CALIBRATE_IO
procedure. This procedure issues an I/O intensive read-only workload, made up of one megabyte of random of I/Os, to the database files to determine the maximum IOPS (I/O requests per second) and MBPS (megabytes of I/O per second) that can be sustained by the storage subsystem.
The I/O calibration occurs in two steps:
- In the first step of I/O calibration with the
DBMS_RESOURCE_MANAGER
.CALIBRATE_IO
procedure, the procedure issues random database-block-sized reads, by default, 8 KB, to all data files from all database instances. This step provides the maximum IOPS, in the output parametermax_iops
, that the database can sustain. The valuemax_iops
is an important metric for OLTP databases. The output parameteractual_latency
provides the average latency for this workload. When you need a specific target latency, you can specify the target latency with the input parametermax_latency
(specifies the maximum tolerable latency in milliseconds for database-block-sized IO requests). - The second step of calibration using the
DBMS_RESOURCE_MANAGER
.CALIBRATE_IO
procedure issues random, 1 MB reads to all data files from all database instances. The second step yields the output parametermax_mbps
, which specifies the maximum MBPS of I/O that the database can sustain. This step provides an important metric for data warehouses.
The calibration runs more efficiently if the user provides the
num_physical_disks
input parameter, which specifies the approximate number of physical disks in the database storage system.
Due to the overhead from running the I/O workload, I/O calibration should only be performed when the database is idle, or during off-peak hours, to minimize the impact of the I/O workload on the normal database workload.
To run I/O calibration and assess the I/O capability of the storage subsystem used by Oracle Database, use the
DBMS_RESOURCE_MANAGER
.CALIBRATE_IO
procedure:SET SERVEROUTPUT ON DECLARE lat INTEGER; iops INTEGER; mbps INTEGER; BEGIN -- DBMS_RESOURCE_MANAGER.CALIBRATE_IO (<DISKS>, <MAX_LATENCY>, iops, mbps, lat); DBMS_RESOURCE_MANAGER.CALIBRATE_IO (2, 10, iops, mbps, lat); DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops); DBMS_OUTPUT.PUT_LINE ('latency = ' || lat); dbms_output.put_line('max_mbps = ' || mbps); end; /
When running the
DBMS_RESOURCE_MANAGER
.CALIBRATE_IO
procedure, consider the following:- Only run one calibration at a time on databases that use the same storage subsystem. If you simultaneously run the calibration across separate databases that use the same storage subsystem, the calibration will fail.
- Quiesce the database to minimize I/O on the instance.
- For Oracle Real Application Clusters (Oracle RAC) configurations, ensure that all instances are opened to calibrate the storage subsystem across nodes.
- For an Oracle Real Application Clusters (Oracle RAC) database, the workload is simultaneously generated from all instances.
- The
num_physical_disks
input parameter is optional. By setting thenum_physical_disks
parameter to the approximate number of physical disks in the database's storage system, the calibration can be faster and more accurate. - In some cases, asynchronous I/O is permitted for data files, but the I/O subsystem for submitting asynchronous I/O may be maximized, and I/O calibration cannot continue. In such cases, refer to the port-specific documentation for information about checking the maximum limit for asynchronous I/O on the system.
At any time during the I/O calibration process, you can query the calibration status in the
V$IO_CALIBRATION_STATUS
view. After I/O calibration is successfully completed, you can view the results in the DBA_RSRC_IO_CALIBRATE
table.
More infos here ...
No comments:
Post a Comment