参考信息:
https://oracle-base.com/articles/misc/measuring-storage-performance-for-oracle-systems#calibrate_io
oracle 11g开始,推出了内置的IO测试包dbms_resource_manager.CALIBRATE_IO,原理和上文提到的Orion工具基本相同。
■先决条件
1、测试所用的数据库用户必须具有sysdba权限
2、Timed_statistics参数必须设为true,异步IO必须打开
3、只有一个I/O校准同时在一个数据库实例进行
【另外,经确认这个测试无法在pdb里面进行。】
【同时注意,不要在生产库随意进行IO性能测试。】
■可通过如下方式确定是否开启异步IO
SELECT d.name, i.asynch_io FROM v$datafile d, v$iostat_file i WHERE d.file# = i.file_no AND i.filetype_name = 'Data File';
■如果异步IO是关闭的,可以通过以下方式开启
ALTER SYSTEM SET filesystemio_options=setall SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
■DBMS_RESOURCE_MANAGER.CALIBRATE_IO存储过程
使用DBMS_RESOURCE_MANAGER.CALIBRATE_IO存储过程访问Oracle数据库的I/O校准功能,该存储过程可以模拟出一系列密集的只读工作量,针对数据文件产生1M的随机IO,从而能确定最大IOPS(每秒I / O请求)和MBPS(每秒M单位的IO)。该过程模拟产生数据块大小的随机读写(默认为8k),其会针对所有实例的所有数据文件都进行测试。
输入参数num_physical_disks用于指定数据库存储所用物理磁盘数。
输入参数max_latency指定目标延迟(以毫秒为单位的数据库块大小的IO请求的最大容忍延迟,一般IO平均等待在10ms左右是良好的表现)。
输出参数max_iops,最大的IOPS
输出参数actual_latency,这个库的平均延迟
■测试脚本
SET SERVEROUTPUT ON DECLARE l_latency PLS_INTEGER; l_iops PLS_INTEGER; l_mbps PLS_INTEGER; BEGIN DBMS_RESOURCE_MANAGER.calibrate_io (num_physical_disks => 1, max_latency => 20, max_iops => l_iops, max_mbps => l_mbps, actual_latency => l_latency); DBMS_OUTPUT.put_line('Max IOPS = ' || l_iops); DBMS_OUTPUT.put_line('Max MBPS = ' || l_mbps); DBMS_OUTPUT.put_line('Latency = ' || l_latency); END; /
■结果输出样例
Note: The high I/O latencies from the calibration run indicate that the calibration I/Os are being serviced mostly from disk. If your storage has a cache, you may achieve better results by rerunning. Rerunning will warm or populate the storage cache. Max IOPS = 714 Max MBPS = 121 Latency = 37
文章评论