使用calibrate_io做oracle io测试

2024年 5月 28日 29.3k 0

因为负责的某省局数据库需要在端午进行信创国产数据库迁移,昨天开会要求对oracle集群做ASM磁盘io的压力测试,因此,可以使用DBMS_RESOURCE_MANAGER.calibrate_io包来进行测试io情况,发出一系列I/O密集型的只读工作量到数据库文件,通过这些操作确定存储的最大IOPS(每秒IO请求数)和存储每秒能够执行的吞吐量MBPS(兆字节每秒I/O)。测试的时候先查询oracle是否开启异步io,再执行存储过程,默认情况下oracle RAC是开启的.

1. 首先检查异步IO是否打开

set line 200
col name for a60
col asynch_io for a40
SELECT name,asynch_io
FROM v$datafile,v$iostat_file
WHERE file# = file_no AND filetype_name = 'Data File';

使用calibrate_io做oracle io测试-1

经查询,异步io是开启的

2. 调用DBMS_RESOURCE_MANAGER.calibrate_io存储过程

输入参数num_physical_disks 指定数据库存储所用物理磁盘数(我输入的3块)。
输入参数max_latency 指定目标延迟(以毫秒为单位的数据库块大小的IO请求最大容忍的延迟,一般IO平均等待在10ms左右是良好的表现)
运行情况可查看V$IO_CALIBRATION_STATUS视图

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;
/

使用calibrate_io做oracle io测试-2

3. 查询存储过程调用结果

SET LINESIZE 100
COLUMN start_time FORMAT A20
COLUMN end_time FORMAT A20
SELECT TO_CHAR(start_time, 'DD-MON-YYY HH24:MI:SS') AS start_time,
TO_CHAR(end_time, 'DD-MON-YYY HH24:MI:SS') AS end_time,
max_iops,
max_mbps,
max_pmbps,
latency,
num_physical_disks AS disks
FROM dba_rsrc_io_calibrate;

使用calibrate_io做oracle io测试-3

  • MAX_IOPS:最大IOPS
  • MAX_MBPS:最大MBPS(每秒最高读请求的最大MB值)
  • MAX_PMBPS:最大PMBPS(单个进程每秒最大IO请求MB值)
  • LATENCY:IO延迟(ms)

相关文章

pt-kill工具的使用
pt-ioprofile工具包的使用
数据库管理-第216期 Oracle的高可用-01(20240703)
DBMS_REPAIR EXAMPLE SCRIPT WITH PARTITION
数据库事务的四大特性: ACID 
使用BBED修复损坏的SYSTEM文件头

发布评论